[英]Git Rebase master conflicts
我在將master重新編入分支時在分支上有一些沖突。
場景是:
分支關閉主節點,進行一些更改,然后提交表示的更改。 結帳主機,進行一些更改,提交所說的更改,結帳分支1。 嘗試重新設置主服務器-沖突。
現在,我還有其他開發人員以類似的方式工作。
主機在所有回購協議(包括Web服務器)上保持同步,我不希望更改主機的歷史記錄。
如果我解決了過去與某個點沖突的基准沖突,如果我結帳master並將其與分支合並-是否會更改master歷史-還是將這些沖突解決方案應用於所有合並工作中?
想象一下您當前的情況:
- A - B - C - D
\ ^
- X - Y master
^
branch1
運行git checkout branch1; git rebase master
git checkout branch1; git rebase master
會將提交從branch1移出,以便將它們應用於master分支的頂部:
master
v
- A - B - C - D
\
- X - Y
^
branch1
這不會更改master ,但是會以兩種方式更改branch1 :
X
的父級從A
更改為D
您將更改提交X
的ID,實際上,就Git而言,它現在是一個全新的提交(並且由於X
具有新的ID, Y
具有新的父級,因此Y
也會獲得新的ID,依此類推(如果分支上有更多提交)。 如果您已經將branch1推送到遠程存儲庫,則對它進行基礎化是一個非常糟糕的主意; 更改已經共享的歷史記錄只會導致問題。
假設您尚未推送branch1 ,則可以將其合並到master中 (使用git checkout master; git merge branch1
),這將導致master快速轉發以提交Y
這為您提供了整潔的線性歷史記錄,而無需更改master :
- A - B - C - D - X - Y
^
branch1 AND master
如果您已經推送了branch1 ,則應避免重新設置基礎,而應使用合並(使用git checkout master; git merge branch1
),這不會更改任何一個的歷史記錄,但會創建一個新的提交(此圖中標記為M
)在master分支上:
- A - B - C - D - M
\ / ^
- X - Y - - master
^
branch1
如果您進行了基准調整,則無論您將基准轉換為哪個分支,都將更改存儲庫的歷史記錄。 這個想法是,當其他開發人員在您推動之后(從起源)拉出master時,他們的存儲庫也將是最新的。
需要明確的是:在重新定基時合並沖突不會更改主數據庫的歷史記錄。 重新合並為合並方法。
如果不想更改主服務器的歷史記錄,則不能將其作為合並方法進行重新設置。 默認的git合並行為應該對您來說很好,無論是否沖突。
git checkout master
git merge branch-1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.