簡體   English   中英

合並沖突變基

[英]Merge conflicts rebase

所以我在我的本地分支中有幾個提交都是關於功能 X 的。我重新調整了這些提交,而沒有從我的遠程分支拉入一個提交 - “添加功能 X”。 然后當從我的遠程分支中拉出時,我注意到重復提交。 我已經壓縮成一個的承諾現在又回來了。 我想好,我將合並它們並將它們壓縮到“添加功能 X”提交中。 合並很好。 但是當我嘗試變基時,我遇到了大量的合並沖突——大多數與我在創建“添加功能 X”提交時已經解決的沖突相同。 沮喪,我再次艱難地完成了它(使用git rebase -i並修復所有沖突),直到 rebase 完成。 現在,當我從遙控器中拉出時,我沒想到會發生任何事情,但令人驚訝的是,來自 rebase 的所有相同提交都又回來了。

我不明白發生了什么。 我所能想到的就是我需要使用git reset --hard commit-before-initial-rebasegit-pull來撤消git reset --hard commit-before-initial-rebase ,然后再次嘗試變基。

我做錯了什么,我該如何解決?

問題是您已將提交推送到遠程分支,然后在本地分支上重寫歷史記錄。

在本地進行更改並將它們推送到遠程分支后,您的本地和遠程分支如下所示:

當地的:

--o--o--a--b--c
     ^        ^
     master   branch

偏僻的:

--o--o--a--b--c
     ^        ^
     master   branch

因此,然后您重新設置並壓縮本地分支上的所有提交,您的本地分支現在看起來像這樣:

當地的:

--o--o--d
     ^  ^
     m  branch

當您從遠程分支拉取時,git 看到您提交了d ,並且遠程分支提交abc ,並且您告訴它您希望在本地分支中進行所有這些提交,因此它會這樣做:

當地的:

     ,--a--b--c--,
--o--o--d--------m
     ^           ^
     m           branch

其中m是合並提交。

沒有魔法告訴 git 你不再需要提交abc 它只知道本地和遠程分支有不同的提交。

你應該做的是在本地壓縮所有提交之后,完成

git push -f

這會告訴 git 使遠程分支看起來像您的本地分支,丟棄您本地沒有的遠程分支上的任何更改。

如果其他人也在使用此分支,則您不應該這樣做,但在您的工作流程中聽起來並非如此。

暫無
暫無

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

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