Git rebase失败了

Bun*_*ker 28 git version-control github rebase git-rebase

我试图改变一位同事的工作.

首先,我得到了大量的冲突,其中<<<<<头部接缝包含新代码.

然后过了一会儿我得到以下错误:

fatal: update_ref failed for ref 'refs/heads/dev_504': 
cannot lock ref     'refs/heads/dev_504': ref refs/heads/dev_504 is at
 XXXXXXX 
 but expected     XXXXXXXX
Could not move back to refs/heads/dev_504
Run Code Online (Sandbox Code Playgroud)

然后,如果我尝试继续,我得到以下错误:

fatal: cannot resume: .git/rebase-apply/final-commit does not exist.
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题,以便rebase不会出错?

小智 12

  • 您可以运行git rebase --abort以完全撤消rebase.Git将返回到你的分支状态,就像调用git rebase之前一样.

  • 您可以运行git rebase --skip以完全跳过提交.这意味着将不包括由有问题的提交引入的任何更改.您很少选择此选项.

  • 你可以修复冲突.

  • 如果不这样做,您应该重新创建分支,或者您可以删除包含rebase状态的.git/rebase-merge目录.

  • 我不确定第三点(解决冲突)是否适用。OP已经修复了冲突,运行`git rebase --continue`后出现错误信息 (2认同)

Ali*_*mir 7

显然,你想要重新定义的分支也在你分支的时候,可能是清理历史记录或在另一个分支上重新定位.如果是这样,您需要:

  • 中止,当前的混乱:git rebase --abort
  • 是最新的: git fetch
  • 现在有趣的部分:

    git rebase --onto BUDDY_BRANCH YOUR_BRANCH~ YOUR_BRANCH

例如,你分支你的本地主人(结账/主人),一个新的分支test_branch(你现在想用当前的原点/主人更新)

git rebase --onto master test_branch~ test_branch
Run Code Online (Sandbox Code Playgroud)

这样做的简单来说,它需要你的分支初始父提交,在当前主服务器和基于它的rebase中找到它.


小智 -2

当您使用另一个分支更新本地分支时,您必须通过在您的修改和他们的修改之间进行选择来解决冲突。解决冲突后,您可以通过编写以下 git 命令继续变基:

git rebase --continue

如果您想中止变基操作,您可以编写以下 git 命令:

`git rebase --abort`
Run Code Online (Sandbox Code Playgroud)