合并从提交到主服务器的分支的特定更改

时间:2013-07-01 18:35:47

标签: git version-control branch git-branch branching-and-merging

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

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:0)

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

使用git gui这非常简单。

不要忘记在合并提交中注意你做了什么。

git merge mybranch
git gui

选择Amend last commit按钮,然后在分阶段面板中单击不需要的文件图标。重写邮件并点击提交。

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

开始
git merge --squash mybranch