我有一個分支main和一個基于main的分支A,它有一些提交。
如果我現在基于A創建一個新的分支B,在B上創建更多的提交,并且在此期間,分支A被合并到main,那么在GitHub上,當檢查B分支的拉取請求到main分支時,你可能會看到重復代碼。如圖所示,這是 B 拉動請求,其中有來自 A 分支和 B 分支的提交:

有什么辦法可以解決這個問題嗎?謝謝!
uj5u.com熱心網友回復:
讓我們來想象一下你的場景:
o--o(主)。
A---B (A)
C--D (B)
在Git中,分支只是對一連串提交的最新的一個參考。一個分支里有哪些提交取決于你要比較的分支:
- 如果您將
A與main進行比較,那么A有A和B的提交,而main沒有。 - 如果你將
B與A進行比較,那么B有C和D,而main沒有。 - 如果你將
B與main進行比較,那么B有A、B、C和D,而main沒有。
現在,如果分支A被合并到main,那么main也將有A和B的提交。這意味著,如果你將B分支與合并后的main進行比較,那么B將有C和D這兩個不在main中的提交:
o---o-------M (main)
/
A--B (A)
C--D (B) <--這些提交不在'main'中
當你從B分支向main提出拉取請求時,GitHub顯示你來自A分支的提交,這一事實使我認為A分支在你創建B分支后被改寫(可能是重新基于):
o---o---o--------M (main)
/
A'---B' (A) <---分支'A'中的重基提交內容
A--B--C--D (B) <--分支'B'仍有舊的提交內容
如果情況確實如此,解決方案就是簡單地將rebase分支B置于main之上,并更新pull request:
o---o---o--------M (main)
/
A'---B'
^
(A) C---D (B)
Git會注意到,由于A和B的提交,main中已經有了A'和B'的修改,因此當你將B分支與main比較時,將只顯示C和D。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/325282.html
標籤:
