簡體   English   中英

如何在git上同步提交

[英]How to sync commits on git

我有一個分支A,在該分支上進行提交C1。 我從A分支了另一個分支; 稱它為B; 並進行提交C2(更改獨立於C1)。 現在稍后,我回到A並對C1進行一些更改。 我現在需要用最新的更改來更新B,因此我在B上執行了“ git rebase A”。這給我帶來了沖突。 有沒有一種簡單的方法可以與A同步。我只想覆蓋分支B上的C1(實際上B.C1應該是A.C1的鏡像)。 或在重新定基時,是否可以指定類似內容:“通過從分支A進行所有更改來自動解決沖突”

我總是可以做到以下幾點。 從更新后的A和頂部的C2櫻桃創建一個新的分支D。 當我這樣做並嘗試將更改推送到gerrit(更新D.C2之后)時,出現錯誤:

To ssh://xxxx@gerrit.xxxx:29418/xxxxx
 ! [remote rejected] HEAD -> refs/for/master (no changes made)
error: failed to push some refs to 'ssh://xxxx@gerrit.xxxx:29418/xxxxx'

我試圖了解原因。

提前致謝。

在重新提交時,可以完全重寫它們。 因此,您最終得到了與以前不兼容的全新提交對象。 如果您在本地進行操作,這不是問題,但是如果您之前已經推送了舊的提交(例如您的情況),它就會變成一個問題。 因為現在,您在遠程存儲庫中有舊提交,而在本地存儲庫中有重寫的提交。 因此,一旦發布了提交,就永遠不應該對提交進行基准調整。 采摘btw也會發生同樣的事情:采摘的提交將被完全重寫並應用於分支的頂部。

相反,只需使用git merge A 合並分支。 這樣,您最終將獲得與以前發布的內容兼容的提交。

現在,根據您的情況,要修復這種情況,請執行git push --force 這將覆蓋遠程存儲庫分支上的所有內容。 因此,請謹慎使用它,並且當其他人也訪問存儲庫時,請不要使用它(因為它們的提交也將因此中斷)。 但是我猜對於gerrit來說還可以,因為它將更新更改請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM