2017-02-17 93 views
0

假設我在分支master上並運行git branch dev - 這將創建一個新分支。Git合併到分支中,自從分支變爲

然後我做出一些改變分支dev

然後我做一些完全不同的變化分支master,但也有一些相同的文件

master -> (arbitrary # of commits) -> master* 
     \ 
     \___ dev -> (arbitrary # of commits) -> dev* 

現在我跑git merge

dev進行的更改將被添加到master

Q1)將會覆蓋對master所做的更改嗎?

Q2)如果對dev所做的更改與對master所做的更改所產生的文件相同,該怎麼辦?

Q2b)如果我想改變一個分支以優先考慮怎麼辦?

例如:test.jsmaster的第2-7行被更改,但在dev的第5-10行更改了它。

如果我希望master中的更改優先,該怎麼辦?也就是說,我想這merge忽略從dev

回答

1

所有更改test.js Git合併完全按照它說。它會合並您的更改。

$ git checkout master $ git merge dev

這將合併從開發的所有更改成高手。根據合併的嚴重程度,它將創建一個單獨的合併提交(您將必須逐步完成該提交併寫入提交消息)。

  • 如果您在兩個分支中修改相同的行(或相同的關鍵部分),則會發生合併衝突(如果您啓動恐慌,則會出現git merge --abort)。
  • 如果修改了相同的文件,但不一樣的線,它只會將更改合併在一起

這就是爲什麼一個測試套件是很重要的一個很好的例子。這是查看合併時間變差的快速方法,因爲您的測試可能因錯誤合併而失敗。

documentation for git merge也有很好的例子。