Git 变基失败。

39

我正在尝试将同事的工作变基。

首先,我遇到了许多冲突,其中 <<<<< head 似乎包含了新代码。

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

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不会出错?


5
请查看https://dev59.com/MHA65IYBdhLWcg3wsgyA。可能有所帮助。 - Gerard Rozsavolgyi
5
你尝试过在执行 git rebase --abort 后重新开始吗? - dahlbyk
1
你用过的第一个命令是什么? - Simon PA
"git rebase --abort" 对我很有用! - notilas
3个回答

23
  • 您可以运行 git rebase --abort 来完全撤销变基操作。Git 会将您的分支状态还原为 git rebase 调用之前的状态。

  • 您可以运行 git rebase --skip 来完全跳过这个提交。这意味着问题提交引入的所有更改都不包括在内。通常情况下您不会选择此选项。

  • 您可以修复冲突。

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


2
我不确定第三点(解决冲突)是否适用。原帖作者已经解决了冲突,错误消息出现在运行“git rebase --continue”之后。 - quiram
% git rebase --skip :( git: builtin/am.c:1981: am_skip: Assertion!is_null_oid(&state->orig_commit)' failed. error: am died of signal 6` - user7610

10

显然,您想要变基的分支在您分支时也被重新变基了,可能是清理历史记录或变基到另一个分支。如果是这样,您需要:

  • 中止当前混乱的过程:git rebase --abort
  • 使其为当前版本:git fetch
  • 现在有趣的部分:

    git rebase --onto BUDDY_BRANCH YOUR_BRANCH~ YOUR_BRANCH

例如,您从本地 master (检出自origin/master)分支,创建了一个新的 test_branch 分支(现在想要将其更新为当前的 origin/master)。

git rebase --onto master test_branch~ test_branch

简单来说,这个操作会获取你的分支初始父提交,在当前主分支中找到相应的提交,然后以此为基础进行变基。


1
这才是正确的答案!要将您的本地主分支重新定位到 origin/master,请输入 git rebase --onto origin/master master~ master - Simmetric

-2

当您使用另一个分支更新本地分支时,您必须通过选择您的修改或他们的修改来解决冲突。

解决冲突后,您可以通过编写以下git命令继续重新定位:

git rebase --continue

如果您想中止重新定位操作,可以编写以下git命令:

`git rebase --abort`

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接