好的,我有一個開發分支,可以遠程跟蹤並在此項目上由所有人共享。Git:重新編譯或合併來更新本地分支
本地我已經分離出來做一些正在進行的工作。但是,與此同時,另一位開發人員已經承諾並將更改推送到我希望在本地分支中反映的開發分支。 這是重新發布的時間嗎?
我不想簡單地提交我的本地分支到開發,然後開始一個新的分支,因爲我想維護我的提交歷史記錄。
據我所知,rebase會將HEAD的開發分支重新應用於我的所有提交,但會覆蓋其他開發人員的更改而不會引發衝突,如果我們對相同內容進行了更改行呢?
好的,我有一個開發分支,可以遠程跟蹤並在此項目上由所有人共享。Git:重新編譯或合併來更新本地分支
本地我已經分離出來做一些正在進行的工作。但是,與此同時,另一位開發人員已經承諾並將更改推送到我希望在本地分支中反映的開發分支。 這是重新發布的時間嗎?
我不想簡單地提交我的本地分支到開發,然後開始一個新的分支,因爲我想維護我的提交歷史記錄。
據我所知,rebase會將HEAD的開發分支重新應用於我的所有提交,但會覆蓋其他開發人員的更改而不會引發衝突,如果我們對相同內容進行了更改行呢?
首先,你取,然後你rebase。你不要因爲這樣做而打破別人的改變;你所做的是重做你的變更集,以便它與他的變更相比是早期版本的變化。它消除了來自日誌的不必要和無用的合併信息,並使日誌更有意義如果這實際上應該如何表示發展歷史。
繼續前進並重新定位;聽起來在這種情況下是正確的做法。方式太多的人只是git拉沒有想到。
+1「太多的人只是**沒有想到的git pull **」。 –
是的,你是對的,rebase會作爲開發分支的頭,並重新應用你所有的提交。
不,它不會覆蓋其他開發人員的更改而不會引發衝突。如果存在衝突的更改,則需要解決衝突(就像在合併中一樣)(修復衝突,並使用git add
來分階段修復),然後告訴基準繼續使用git rebase --continue
。
是的,這是一個合適的時間做一個rebase。這就是很多人的工作方式;如果他們沒有完成本地提交,並且有上游提交,他們會在繼續工作或推進公共回購之前重新提交本地提交。
爲什麼不將修改存儲到修補程序中,將其更改提取並應用修補程序? – shortstuffsushi
@shortstuffsushi我可能會誤解你(我對補丁幾乎一無所知),但我沒有看到如何拉動他的變化到我的私人分支。僅限於我的本地開發分支副本。 –
@shortstuffsushi; ** git rebase **會自動執行,所以爲什麼要讓事情變得更加困難? – itsbruce