Git rebase失败了

时间:2016-01-09 15:01:54

标签: git github version-control git-rebase 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

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

fatal: cannot resume: .git/rebase-apply/final-commit does not exist.

如何修复此问题,以便rebase不会出错?

4 个答案:

答案 0 :(得分:12)

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

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

  • 您可以解决冲突。

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

答案 1 :(得分:7)

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

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

    git rebase --onto BUDDY_BRANCH YOUR_BRANCH~ YOUR_BRANCH

e.g。 您分支本地(签出原始/主人),新分支 test_branch (您现在想用当前来源/主人更新)

git rebase --onto master test_branch~ test_branch

这样做的简单来说,就是你的分支初始父提交,在当前的主设备和基于它的rebase中找到它。

答案 2 :(得分:-2)

确保您的更改和同事的更改已得到承诺。

如果您希望同事的更改持续存在,您可以这样做,

  

git rebase<你的分支> < another_branch>

其他

  

git rebase< another_branch> < your_branch>

答案 3 :(得分:-2)

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

git rebase --continue

如果你想中止你的变基作用,你可以写这个git命令:

`git rebase --abort`