Git cherry-pick合并删除文件

5
我正在尝试在git中挑选一个提交,它添加了一堆文件,但也修改了一个在我的分支中不存在的文件。
现在存在冲突:要添加的文件都已暂存,而在提交中被更改但在分支中尚不存在的文件未被暂存,并且列在如下位置:
deleted by us: app/changed_file.rb

如果我只提交暂存的文件,当changed_file.rb最终合并到分支中时,这会引起问题吗?

2个回答

3

https://www.kernel.org/pub/software/scm/git/docs/git-cherry-pick.html

Cherry-pick会创建新的提交(commit),如果你忽略了在你的分支中不存在但最终需要合并的分支中存在的文件,那么不会发生任何事情。

mkdir test && cd test && git init && touch foo.txt
git add foo.txt && git commit -m "Init repo"
git branch test && git checkout test && vi foo.txt 
git add foo.txt && git commit -m "Changed foo on branch test"
git checkout master && touch bar.txt
git add bar.txt && git commit -m "Create bar.txt"
vi bar.txt 
touch baz.txt && git add . && git commit -m "Will be cherry picked"
git checkout test && git cherry-pick bfd1b58
git rm bar.txt && git commit
git checkout master && git merge test

由于执行 ls 命令,结果如下:bar.txt baz.txt foo.txt


1
你可以在挑选的提交中简单地删除那个文件,如果它不是必需的...
git rm 文件名
git commit
- 确保您的提交信息包含Change ID:作为最后一段
git push origin HEAD:refs/for/分支名
这样你就不会遇到任何冲突,下次合并将更加容易。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接