【问题标题】:Forgot "git rebase --continue" and did "git commit". How to fix?忘记了“git rebase --continue”并做了“git commit”。怎么修?
【发布时间】:2011-06-23 15:56:21
【问题描述】:

我在 git 中重新编写代码,我遇到了一些合并冲突。我解决了冲突并做了:

git add

此时我忘了做:

git rebase --continue

我继续编码并做到了:

git commit

对于更改。现在我在"no branch" 上,不能这样做:

git rebase --continue 

我该如何解决这个问题?

【问题讨论】:

  • # 目前不在任何分支上。没有什么可提交的(工作目录干净)

标签: git


【解决方案1】:

只需git reset --soft HEAD^。它将 HEAD 指针移动到其父级,但保留工作树并将合并更改添加到索引。因此,您可以像以前一样继续使用git rebase --continue 进行变基。

【讨论】:

  • 这完全有效,也是我第一次发现 --soft 的用途。很高兴知道它是如何工作的,谢谢!
  • 我希望人们会看到对此答案的所有赞成票并遵循此处的建议!
  • 这正是我的想法(但可能一不小心就过去了)。不确定 HEAD 是否在变基期间更新。感谢您的确认!很高兴我在解决上面的头痛问题之前滚动了一点。
  • 我编辑了接受的答案以在此处放置一个链接 - 在我按照上述说明操作之前我没有看到这个答案。
  • 如果我以后使用git add,是否需要在这里使用--soft?我刚刚遇到了这个问题并没有先在stackoverflow上阅读这个答案就做了git reset HEAD~。有没有可能我破坏了我没有注意到的东西?
【解决方案2】:

编辑:也请查看下面的答案,看看这是否对您来说是一个更简单的解决方案。 https://stackoverflow.com/a/12163247/493106


我必须尝试一下,但我认为这是我会做的:

  1. 标记您的最新提交(或在某处写下它的 SHA1,以免丢失):git tag temp
  2. git rebase --abort
  3. 再次执行变基。您将不得不再次解决合并问题。 :(
  4. git rebase --continue
  5. git cherry-pick temp

问题在于您的temp 提交可能同时包含合并的解决方案和新代码。所以这可能很棘手,但我会尝试一下,看看它是否有效。

【讨论】:

  • 您可以像@MatrixFrog 所说的那样进行标记,也可以将其保存为补丁。然后做rebase abort。检查状态以确保 repo 处于您知道没有问题的状态,然后开始 fetch 和 rebase。
  • 不要这样做。有关更简单/更清洁的方法,请参见下面的 kirikaza 答案。不要再搞乱挑选和解决冲突了。
  • @Abhilash 请接受 kirikaza 的回答。我(和 tandrewnichols 一样)这样做了,并且有一个更简单的方法(互联网似乎同意这个答案有 4 倍的赞成票)。
  • 现在是 10 倍的赞成票...另外,使用 git rerere 来记住您的冲突解决方案(很有用,除非您有时做出不希望它记住的错误解决方案)。
【解决方案3】:

我遇到了同样的问题,更糟糕的是,我正在重新提交三个提交,在解决第二个提交的冲突后,我“提交”而不是“重新设置 --continue”。

结果我得到了这个git reflog

当我应用 kirikaza 的解决方案时,我只是恢复了第三次提交,而不是第二次,这是有问题的..

如您所见,rebase 从 remotes/origin/master 分支结帐开始,然后应用我的三个提交,这些提交显示为 reflog 中的三个先前操作(结帐之前)。

然后,如果你想从一个干净的基础重新启动,在 rebase 之前,你可以简单地在 rebase 操作签出之前硬重置为哈希。就我而言(见图):

git reset --hard 859ed3c

然后你可以开始一个新的git rebase

【讨论】:

    【解决方案4】:

    我重新设置了 git 基础,修复了冲突,git 添加了有冲突的文件,并且(错误地)提交了。

    我尝试了给定的git reset --soft HEAD^git reset --hard 解决方案,但都不适合我。

    但是,git rebase --abort 起作用了:它把我带回到了 rebase 开始之前的干净工作树。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 2015-03-11
      • 2021-09-12
      • 2019-10-04
      • 2014-03-20
      • 1970-01-01
      • 2019-02-23
      相关资源
      最近更新 更多