git将较新的分支合并到较旧的分支中?

时间:2013-11-19 19:10:44

标签: git

哇,我和git一起度过了一段时间。这是我的情况。

  1. 大师 - 一切都很好。生产中的最新代码。
  2. iss454 - 最初是远程拉下来的。然后我以某种方式合并了主人,但失去了所有的变化。没有意识到这一点,我做了更改,然后推动了这些变化。现在,iss454看起来更像是掌握了一些新的变化。
  3. 在我将iss454推回原位后,我意识到我做了什么。做傻事!所以我回去为iss454创建了一个新的分支,其中包括较旧的(和良好的代码),而在iss454中: git branch iss454-brian 867821ac
  4. iss454-brian - 这是来自远程的原始代码。
  5. 一旦创建了iss454-brian,我就紧张起来并创建了一个新的分支来解决问题454,以确保我没有丢失我的新变化。在iss454中,我做了 git checkout -b iss454-mike
  6. iss454-mike - 这是我需要在iss454-brian之上申请的新代码。
  7. 当我创建iss454-brian时,我验证了所有需要存在的代码实际存在。

    所以现在我需要对iss454-mike进行更改并将其应用于iss454-brian。简单吧?是的,没有发生。

    在问题454-brian中,我做了 git merge iss454-mike ,git做了它的事情。我觉得很棒,很有效!直到我去寻找需要在那里的代码。没错。

    iss454-brian现在看起来像是iss454-mike但却错过了我需要的代码。

    发生了什么事!

1 个答案:

答案 0 :(得分:2)

我的猜测是你实际上删除了这些更改,并在分支机构iss454-mike上提交了这些删除(同样在你最初注意到的iss454上)。

将iss454-mike的更改合并到iss454-brian时,您将再次删除更改。

你需要的是重置iss454-brian以获得你需要的更改,然后挑选你缺少的iss454(或iss454-mike)的变化。只需在日志中找到SHA即可。

iss454-brian现在应该包含你需要的东西。

或者你可以进入iss454并做一个rebase -i,找到那些奇怪的删除并删除那些提交。如果你已经推动它们,你需要认真考虑这个,因为其他克隆可能有你正在删除/重写的提交......

希望这有帮助。