我是新的Git
並試圖知道如何git merge
命令工作。所以我嘗試了一個簡單的git項目,例如:Git合併影響工作目錄和臨時區域
我有兩個分支:master
和b
。你可以看到git的日誌都在這裏(1,2,4
是在分支機構創建示例文件):
* cf3456b (HEAD, b) add and modify 4 in b
* 68b9086 edit 1 in branch b
| * 81e6490 (master) remove 1 from branch b1
| * e0a6844 modify 2 in branch b1
| * 06bad1d add2 in branch b1
|/
* c667d3b add 1 in branch master
所以
master
只有一個文件:2
b
只有兩個文件:1
,4
現在,當我嘗試這樣做:
git merge master
我看到這個我ssage:
CONFLICT(修改/刪除):1在master中刪除並在HEAD中修改。 版本HEAD of 1留在樹中。自動合併失敗;修復衝突 然後提交結果。
這是奇怪的,我之前想:
merge
像checkout
嘗試複製的內容從最新提交merge in
分支到最新提交merge into
分支,但相反的checkout
,merge
嘗試不要更改merge into
中的任何文件。最後,如果merge in
和merge into
分支具有不同狀態的相同文件,則會發生衝突。- 我知道
git
只保存snapshot
的文件而不是differences
。那麼git如何知道最新的分支提交的變化? (在消息你可以看到1 deleted in master and modified in HEAD
哪些差異)
現在,如果我的想法是真實的,應當對文件1
沒有衝突。所以我的想法是不正確的,但merge
真的工作?
可能重複的(雖然他們不詳談了):http://stackoverflow.com/q/14961255/ 1256452 – torek