2016-11-18 67 views
0

我仍然在學習圍繞git的方式。合併之前,git的日誌告訴我類似的東西....git合併和日誌消息

commit 9588d21a81d0f8a977c8d0651eee9f56eaf4186d 
Merge: 0367c67 fbd02fc 
Author: me <[email protected]> 
Date: Thu Nov 17 17:09:25 2016 -0600 

    On branch branch1 

    ... 

我想與branch0合併BRANCH1,所以我發出的合併命令:

> git checkout branch0 
> git merge branch1 

出乎我的意料,它去順利。輸出看起來像這樣:

Updating e57618a..9588d21 
Fast-forward 
src/file1.c       | 235 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- 
src/blah.h       | 15 +++- 
src/file2.c       | 2 - 
src/main.c       | 91 +++++++++++++++++------ 
... 

11 files changed, 811 insertions(+), 100 deletions(-) ... 

沒有衝突或任何AFAICT。然而,當我發出一個git log命令,存在已經採取任何這種合併的指示的地方,和老犯BRANCH1尚處於日誌的頂部:

commit 9588d21a81d0f8a977c8d0651eee9f56eaf4186d 
Merge: 0367c67 fbd02fc 
Author: me <[email protected]> 
Date: Thu Nov 17 17:09:25 2016 -0600 

    On branch branch1 

    ... 

這是我應該期待的行爲?我期望至少該分支現在將顯示爲branch0。如果我嘗試刪除branch1,此時會發生什麼?

+0

強制刪除git狀態是否顯示您在branch1或branch0上?而且,在合併之後,這個消息是否說明了正在執行的快速合併的某些內容? –

+0

@JoseB git status說我在branch0上。 git合併確實說了一些關於「快進」的內容。我在編輯中添加了一些細節來解決我的問題。謝謝。 –

回答

2

根據你的意見,它看起來像git執行了一個簡單的快速合併。基本上你在branch1中做了一個或多個提交,然後把這個分支合併回到branch0,所以git只是簡單地移動了branch0的指針指向branch1的最後一個提交。

這是一個快進合併。有些人不喜歡這種情況,並希望看到明確的合併,在這種情況下,當您發出合併命令時,您需要使用--no-ff標誌。

git book下圖可以幫助說明這一點:

two git branches before a fast-forward merge

當git的(在你的情況或branch0)執行快進合併分支主只需移動到A點提交C3。沒有創建額外的合併提交。

如果刪除分支1,則不會丟失任何信息,因爲分支0仍然指向來自分支1的最新提交。您可以通過發出以下命令來驗證它(在分支0上)。

git branch --merged

它應該顯示BRANCH1,您可以用刪除:

git branch -d branch1

,如果你想試試刪除非合併分支機構的Git會發出警告,你會用-D

+0

那麼這是否意味着我沒事?如果我刪除branch1,會發生什麼情況?謝謝。 –

+0

是的,你沒問題,如果你刪除了分支1,沒有東西丟失,因爲分支0仍然指向來自分支1的最新提交。 –