2013-07-01 191 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 

這更復雜,但它將其他文件合併到您當前的分支。

相關問題