2013-07-01 140 views
0

如果我有一个分支并已提交2个文件中的更改。
如果我决定合并分支但只有一个文件的变化,我怎样才能做到这一点git
或者我应该手动进行master分支的更改吗?合并从提交到分支的分支的特定更改

+0

您的更改是单个提交的一部分吗?或者你有多个提交? –

+0

@CarlNorum:它们是单独分支中单个提交的一部分 – Jim

+0

@Jim它是你最近的提交吗?还有其他提交吗? – jszakmeister

回答

0

像往常一样合并分支,并修改上一次提交以取消选择目标文件的更改。或者要求合并在提交之前停止,并且只播放所需的文件。

使用git gui这是非常微不足道的。

不要忘记在merge commit中注意你做了什么。

git merge mybranch 
git gui 

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

如果你想只是一个新的承诺,而在展示历史上的合并,这样做,只是

git merge --squash mybranch 
+0

我不知道如何去做你的任何建议! :( – Jim

+0

只是按顺序执行它们:'git merge mybranch'然后'git gui',选择Amend last commit按钮,然后在staged面板中点击不需要的文件图标。重写消息并点击提交 –

+0

@BalogPal为什么不能 – jszakmeister

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 

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

相关问题