2011-03-24 53 views
5

我是Git中的新成員。目前,我遇到這樣的情景:合併衝突解決後提交消息的問題

步驟0我在子工作分枝

第1步。我已經加入& COMMITED文件1,文件2,文件3我分枝與分別提交消息msg1,msg2,msg3

步驟2.我checkout master切換到分支

第3步。我pull origin master更新主分支最新版本的起源代碼

步驟4.我merge sub-branch到我工作的代碼合併到當前的主分支代碼

然後,我在文件2了衝突,

然後,我手動解決了衝突。現在,需要添加文件2,因爲此文件存在更改。

步驟5.我add file2在主分支,因爲我已經解決了這個文件

步驟6.什麼提交消息我現在寫的衝突?只有msg2?或者msg1,msg2,msg3現在都需要重寫嗎? (我不希望鬆散提交信息MSG1,MSG2,消息3對我工作的文件),一旦你解決衝突和git add <conflicted file>當你去到git commit它應該提供一個預建的提交信息

回答

8

你不寫那些合併提交一個新的提交信息;您正在爲合併提交本身編寫提交消息。您的歷史將如下所示:

- x - o - o - o (origin/master) - X (master) 
    \       /
    1 - 2 - 3 (sub-branch) ------ 

您正在撰寫的提交消息是針對X。提交1,23是祖先,仍在歷史中,他們仍然有他們的提交信息。沒有辦法改變這些合併。

X的提交消息(如果沒有衝突)將默認爲Merge branch 'sub-branch'之類的內容。如果您有衝突,但它仍然會具有作爲第一行,而且其中有衝突的文件列表:

Merge branch 'sub-branch' 

Conflicts: 
    file2 

這是一個溫柔的提示,你所做的事情不僅僅是一個更顯著簡單的合併 - 你必須做一些手動工作來解決file2中的衝突。如果你喜歡,你可以添加一個關於造成這些衝突的原因的簡要說明以及如何解決這些衝突。否則,請按原樣使用該消息!記住,這只是對合並(和衝突解決)的描述。您合併的提交具有自己的提交消息。

+0

現在,我得到了整個過程,謝謝:) – Mellon 2011-03-25 08:26:59

+0

+1非常好的回答:) – 2011-03-26 06:52:41

3

合併和任何已解決的提交。不是嗎?其他合併的提交不會丟失,您不應該重寫任何內容。

  1. 提交到BranchB
  2. git checkout master
  3. git pull origin master
  4. git merge BranchB
  5. 解決衝突在文件(S)
  6. git add <conflicted file(2)>
  7. git commit

第7步:如果不叫應PARAMS打開默認犯了一個體面的消息,說明該合併消息的編輯和解決衝突(我相信)

+0

謝謝,我明白了:) – Mellon 2011-03-25 08:27:29