我有2个文件在某个分支中提交,我想只合并来自提交变更集的单个文件。我该怎么做?
答案 0 :(得分:2)
git-merge
没有选项可以合并路径列表。相反,您必须手动执行此操作,方法是指示git在合并发生后但在提交之前停止。然后,您可以将第二个文件重置为HEAD
的内容,并将这些内容放在磁盘上,这将导致仅合并第一个。
例如,如果有问题的提交是0123abc
,并且您希望从合并中省略的文件是file2.txt
:
git merge --no-commit --no-ff 0123abc
git reset HEAD file2.txt
git checkout -- file2.txt
答案 1 :(得分:1)
假设您在其中一个文件看起来像在更改的分支中看到的那样,并且对于另一个文件看起来像在当前分支中那样,那么您可以从一个分支中提取更改没有实际创建合并。要以交互方式执行此操作,您可以使用git rebase -i
。
您可以在要合并的文件上使用git stash
,git checkout
到未修改的分支,然后git stash pop
。
如果您希望最终使用当前分支中所做的某项更改,并且另一项更改消失,则可以手动还原不需要的更改,然后git commit --amend
编辑原始提交,只有另一个文件保持不变。
有更多高级选项可供使用,使用blob和一些git的低级合并功能,但是如果没有很棒的git-fu就可以避免它们。