0

如果我有一个分支并在 2 个文件中提交了更改。
如果我决定合并分支但只更改一个文件,我将如何执行此操作git
或者我应该手动在master分支中进行更改?

4

2 回答 2

1

有不同的方法可以做到这一点。由于您只想应用部分提交,因此纯合并可能不是最好的方法。我会想到的最简单的方法是,从另一个分支的提交中签出文件并将其提交到当前分支中:

git checkout <commit> <path to file>
git add <path to file>
git commit

请注意,这将有效地用另一个分支中的文件覆盖当前分支/工作副本中的文件。所以没有合并完成!

另一种可能的解决方案是检查您希望应用更改的分支,然后从另一个分支中挑选单个提交到您的工作副本和索引中,并从索引中删除不应提交的文件即:

git checkout <branch>
git cherry-pick --no-commit <hash of commit>
git reset HEAD <file which should not be commited>
# resolve any conflicts
git commit

这更复杂,但它会将其他文件合并到您当前的分支中。

于 2013-07-01T18:57:23.043 回答
0

像往常一样合并分支,并修改最后一次提交,取消选择目标文件的更改。或者要求合并在提交之前停止,并仅暂存所需的文件。

使用git gui它非常简单。

不要忘记在合并提交中记录您所做的事情。

git merge mybranch
git gui

选择修改最后一次提交按钮,然后单击暂存面板中不需要的文件的图标。重写消息并点击提交。

如果您只想要一个新的提交而不显示历史中的合并,请执行相同的操作,只需从

git merge --squash mybranch
于 2013-07-01T18:51:12.033 回答