6

我敢肯定有很多 GIT 用户遇到了这个问题:

  1. 从 master 创建一个分支。我们称之为featureX
  2. 在某个地方,在处理featureX时,您意识到您想要修复以前的提交:
    • 你提交你的修复。
    • 你做你的 rebase 和 squash/fixup。
  3. 稍后,您想针对您的 master 进行 rebase 以将最新更改合并到featureX中。
  4. 事情中断是因为你的分支已经发散了(修复没有在 master 中完成)。你有一个糟糕的一天。

这是我第二次发生这种情况。第一次,我在featureX中没有太多的历史,只是从 master 中创建了一个新分支。你对此有何看法?你会如何解决这个问题?是否有可能进行git reset某个 reflog?在这种情况下,我可以撤消变基并将修复提交移回featureX 之上(使用交​​互式变基)。

我确信有不同的方法可以解决它,但我想这是一个常见的问题。

4

1 回答 1

2

是的,您可以将任何分支重置为之前签出的任何内容(reflog)。因为您的修复仍在 FeatureX 中,所以 rebase 的行为与您不进行修复的情况没有什么不同 - 只有当 master 的分歧与 featureX 分支中的任何提交发生冲突时才重要 - 是否修复。

其次,当人们第一次学习 git 时,就会爱上变基的美妙之处。但我又回到了合并。它更简单,它标志着历史的发生,并迫使一些纪律。这是我的工作流程:http ://dymitruk.com/blog/2012/02/05/branch-per-feature/

于 2012-07-12T04:52:48.740 回答