2013-04-25 90 views
4

當我創建一個新的分支並對其進行提交時,該怎麼辦?我沒有看到它在我的圖中分支。Git圖不顯示分支

這裏是我做的代碼:

git init 

git add . 
git commit -a 

... other commits in here 

git checkout -b mynewbranch 

git add . 
git commit -a 

git checkout master 
git merge mynewbranch 

git add . 
git commit -a 

這是我希望在我的腦海看的時候我執行git的日誌--graph

* 47926e1 This is a commit back on master 
\ 
    * f3dc827 How come i am not seeing a branch in my tree 
    * 1cd3018 This should be on my new branch 
/
* 47f3716 This is my third commit 
* 878b018 This is my second commit 
* 2db9f83 Initial commit 

但我看到的是:

* 47926e1 This is a commit back on master 
* f3dc827 How come i am not seeing a branch in my tree 
* 1cd3018 This should be on my new branch 
* 47f3716 This is my third commit 
* 878b018 This is my second commit 
* 2db9f83 Initial commit 

我不理解什麼嗎?

+2

由於沒有其他提交,git正在分支上快速前進。嘗試git merge --no-ff mynewbranch將其記錄爲合併關閉該分支 – Doon 2013-04-25 14:29:15

+0

這是最佳實踐方式,還是僅僅爲了美觀地顯示它們是獨立的分支? – 2013-04-25 14:34:19

+0

它取決於你,以及你想如何看樹。如果你認爲這項工作是在該分支完成是很重要的。如果你這樣做了一噸,你的提交歷史充滿了分支,並且可能很難遵循。最佳實踐通常由您正在使用的團隊以及他們想要如何使用git來定義。 – Doon 2013-04-25 14:39:05

回答

4

如果您在使用mynewbranch時沒有提交任務,那麼您的歷史記錄將如您所示。在這種情況下,不需要實際合併;合併後的主人與我的新朋友一樣。如果是這種情況,git會(默認情況下)執行所謂的快進合併;主分支指針只是更新爲與合併提示相同的提交。這通常會導致更簡單的提交歷史記錄,更容易處理,尤其是在遠程存儲庫中正在進行工作的情況下。

如果你想強制合併記錄爲合併在git中,你可以在git merge上使用--no-ff選項。

在git中,通常認爲在可能的情況下避免合併是一種很好的做法。

+0

謝謝你的出色解釋。我的問題是,使用非快進選項還是讓git決定最佳做法? – 2013-04-25 14:37:33

+0

關於快速向前和非向前快速合併,我已經看到有人提出支持兩者的論據([Git flow](http://nvie.com/posts/a-successful-git-branching-model/)),例如,建議不要快進)。 – 2013-04-25 14:40:59

+0

通常認爲最佳做法是儘可能保持版本歷史儘可能簡單,這意味着使用快進。 --no-ff選項用於支持需要顯式分支和合並跟蹤的方法。 – antlersoft 2013-04-25 14:46:51

相關問題