新分支修复主分支

时间:2018-06-06 11:24:59

标签: git git-merge git-rebase

我们有一个包含多个提交的主分支:

1 -> 2 -> 3 -> 4 -> 5 -> ..... -> 100

此主人已部署到制作中。

现在我们发现在版本3中,系统引入了一个错误,导致版本10, 15, 34, ...中的更多修复程序被人们试图解决问题并由此产生新问题。

由于某些提交很重要,而且由于已经部署了主服务器,因此我们无法重置为第3版。

所以我们从版本2(在错误之前)创建了一个分支并按照我们的方式工作 包括已提交的相关功能:

1 -> 2 -> 3 -> 4 -> 5 -> ..... -> 100
      \
         A -> B -> C ...........- > Z

现在我们想采用Z版本并合并/重新定义它作为我们主人的最新版本。 同样,我们希望保留3到100的所有历史记录。

我们知道一个选项是在版本100上重新定义A而另一个选项将Z合并为100,但我们不确定在这种情况下什么是更好的方法。

1 个答案:

答案 0 :(得分:1)

为什么不记录真正发生的事情?你放弃了3..100系列而转而使用A..Z系列,所以请记录:

git tag -m "3 was so bad we abandoned the branch here" abandoned-master master
git checkout -B master better-version
制造

... 1---2---3 ... 100   abandoned-master
         \
          A---B ... Z   master

如果您的生产环境保留了生产投入的合理日志,任何查看它们和git历史的人都会看到发生了什么:提交3,10,54,100投入生产,然后Z投入生产。这里发生的事情绝对清楚。

添加谎言

# as above, then
git merge -s ours -m "not really a merge, ^2 is abandoned history" master@{1}

... 1---2---3 ... 100     abandoned-master
         \           \
          A---B...Z---*   master

或者更加彻底歪曲历史的rebase将积极隐瞒相关事实。任何使用伪造历史的人都不会得到帮助。