2009-12-13 51 views
3

我對git相當陌生。就在幾分鐘前,我在兩個分支上進行了合併;讓我們稱他們爲A和B.我在'分支A'上;我的下一個命令是'git merge B'。它說有一個衝突,但我查看了文件,沒有衝突標記。我添加了文件,提交了更改,並再次執行了合併命令。 「已經是最新的」是我得到的消息。使用git merge的問題

但似乎沒有合併發生。兩個分支仍然存在,兩者都與合併前相同。

我做錯了什麼?我怎樣才能讓這兩個分支合併成功?

謝謝。

回答

1

我不知道您最初的衝突,除非是有關在兩個移除,同時在B中重新添加確切的錯誤信息可能有助於在這裏(與你的Git版本一起)

合併兩個文件分支並不意味着一個人會消失,只有通過一次新的承諾才能將他們的歷史聯繫起來,從而將一個分支的所有差異帶到另一個分支。

「已經起牀了最新的」是指所有B中的變化是現在已經在A.
換句話說,B是A的父(gitk應該能夠告訴你,)

由於您已將該文件添加到A中,因此分支A不應該與合併之前的樣子完全一樣。

2

它說有一個衝突,但我看了看文件,沒有衝突標記。

沒有關於Git說什麼(關於衝突的消息)的更多細節,我只能猜測發生了什麼。我猜Git說有文本(上下文)衝突,它能夠自動解決,或者衝突是樹型變化,例如CONFLICT (delete/modify),其中一邊刪除文件,另一邊修改它。

我添加了文件,提交了更改,並再次執行了合併命令。 「已經是最新的」是我得到的消息。

如果在另一個分支的祖先中的一個分支,你會得到快進或最新的情況。除非明確要求,否則Git拒絕做無意義的合併。

如果你想重做comitted合併,你必須先撤消:

git reset --hard HEAD^ 
git merge B 

萬一你決定,你做出的決議是好的:有引用日誌(git reflog)以防萬一你改變了主意。

+0

你確定'HEAD ^'?如果沒有創建合併提交,那麼這不會丟棄最新的提交或分支「A」嗎? – Bombe 2009-12-13 19:24:26

+0

我正在考慮合作(創建)合併 - 我已編輯回覆以澄清它。如果合併不合並,它將會是'git reset --hard HEAD'和'rm .git/MERGE_HEAD'。 – 2009-12-13 23:16:18