cherry picking a commit that deletes files

git

Solution

Although that commit deletes those files, you have modifications that weren't present in the deleted version. As there is a conflict here, between the branch that modifies the files and the branch that deletes them, you will need to resolve it by indicating that you're happy to discard the changes and apply the delete (`git rm ...`). Once you've done that, `git commit` to create the cherry-picked commit.

Problem

I need to merge several repositories (each of them was converted from TFS) into one. To do that I use git cherry-pick command, which works for some commits, but not for others: ``` $ git status # On branch master nothing to commit, working directory clean $ git diff-tree --no-commit-id --name-only -r e2d8405 Libraries/IFileTransformer/ITransformer.cs Libraries/IFileTransformer/IFileTransformer.csproj Libraries/IFileTransformer/IFileTransformer.csproj.vspscc Libraries/IFileTransformer/Properties/AssemblyInfo.cs $ git cherry-pick e2d8405 error: could not apply e2d8405... TFS changeset 2836 hint: after resolving the conflicts, mark the corrected paths hint: with 'git add <paths>' or 'git rm <paths>' hint: and commit the result with 'git commit' $ git status # On branch master # You are currently cherry-picking. # (fix conflicts and run "git commit") # # Unmerged paths: # (use "git add/rm <file>..." as appropriate to mark resolution) # # deleted by them: Libraries/IFileTransformer/ITransformer.cs # deleted by them: Libraries/IFileTransformer/IFileTransformer.csproj # deleted by them: Libraries/IFileTransformer/IFileTransformer.csproj.vspscc # deleted by them: Libraries/IFileTransformer/Properties/AssemblyInfo.cs # no changes added to commit (use "git add" and/or "git commit -a") $ ``` How do I find out what is wrong here? Who is "them"? It seems to me that the e2d8405 commit deletes the four files. If the files exist (and they do) then where is the problem with applying the commit? ``` $ git checkout e2d8405^ Note: checking out 'e2d8405^'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b new_branch_name HEAD is now at 48b5b2f... TFS changeset 2835 renamed namespace installutils to utils $ md5sum IFileTransformer.csproj 9f9851dc9db3bddd1e6920631fa14e8b *IFileTransformer.csproj $ git checkout master Previous HEAD position was 48b5b2f... TFS changeset 2835 renamed namespace ins tallutils to utils Switched to branch 'master' $ md5sum IFileTransformer.csproj 9f9851dc9db3bddd1e6920631fa14e8b *IFileTransformer.csproj ```

Original source