2014-10-07 107 views
37

我聽說過關於Git的「合併泡沫」。我對Git相當熟悉,但不認爲自己是專家。我聽說過一些關於合併泡沫的負面消息。什麼是Git中的「合併泡沫」,它有什麼問題,我該如何避免它?什麼是「合併泡沫」?

回答

38

A 合併泡泡是Git中的「微不足道的合併」,不需要任何衝突來解決。當您使用--graph選項時,會在顯示合併的日誌中出現氣泡。例如,如果運行git log --graph你可能會看到這樣的內容:

| | 
* | commit d79f3c4e129356b055c659ee5be28081c1f38aa1 
|\ \ Merge: 09bf1ed 4ef9a23 
| | | Author: Peter <[email protected]> 
| | | Date: Wed Sep 17 17:21:07 2014 -0400 
| | | 
| | |  Merge branch 'master' of http://fictitiousrepo.visualstudio.com/DefaultCollection/_git/fictitiousproject 
| | | 
| * | commit 4ef9a2387f0d4db39a6cab8ff8f531815935c305 
| | | Author: Andrew <[email protected]> 
| | | Date: Tue Sep 16 11:54:14 2014 -0500 
| | | 
| | |  updated changelog 
| | | 
* | | commit 09bf1ed0125d77c26b5760939c125998bb046e9a 
|//Author: Peter <[email protected]> 
| | Date: Wed Sep 17 17:20:30 2014 -0400 
| | 
| |  fixed some bugs 

在線條「膨脹」出來是「合併泡沫」。這看起來似乎無害;但許多人認爲它比可能發生可讀要少得多,這將是這樣的:

| 
* commit 09bf1ed0125d77c26b5760939c125998bb046e9a 
| Author: Peter <[email protected]> 
| Date: Wed Sep 17 17:20:30 2014 -0400 
| 
|  fixed some bugs 
| 
* commit 4ef9a2387f0d4db39a6cab8ff8f531815935c305 
| Author: Andrew <[email protected]> 
| Date: Tue Sep 16 11:54:14 2014 -0500 
| 
|  updated changelog 
| 

...因爲沒有合併真的很需要。

這通常會在通過自動合併來接受拉取請求時發生。有時候,這是由於「合併請求」按鈕在Github上的工作原因。

爲了避免合併氣泡與拉請求,一種策略是手動合併。例如:

git checkout master 
git remote add remoteorigin git://remotegithost.com/remotegitrepo/remotegitproject 
git fetch remoteorigin 
git merge remoteorigin/remoteprojectbranch 
git push origin master 

要從拉請求最近承諾合併泡沫(如果你還沒有推),一個策略是先藏匿當前的變化,你的頭恢復到泡沫前的承諾,拉底,然後推。例如:

git stash save 
git reset --hard HEAD~1 
git pull --rebase 
git push origin HEAD 

參考: http://adammonsen.com/post/1172

+6

+提問和解答。一個男人表演。 – 2014-10-07 15:17:28

+3

這就像......我見過的最好的自我回答的問題。超級實惠,感謝分享。 – meagar 2014-10-07 15:18:48

+4

我不能在SO上找到答案,所以我想我會分享... – 2014-10-07 15:19:38