【问题标题】:Git rebase failingGit rebase 失败
【发布时间】:2016-04-14 04:45:32
【问题描述】:

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

首先,我遇到了很多冲突,其中

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

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.

我怎样才能解决这个问题,这样变基不会出错?

【问题讨论】:

  • 看看stackoverflow.com/questions/3685001/…。可能有帮助
  • 你尝试在git rebase --abort之后重新开始吗?
  • 你使用的第一个命令是什么?
  • "git rebase --abort" 为我工作!

标签: git github version-control git-rebase rebase


【解决方案1】:

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

git rebase --continue

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

`git rebase --abort`

【讨论】:

    【解决方案2】:
    • 您可以运行 git rebase --abort 以完全撤消变基。 Git 会将您返回到调用 git rebase 之前的分支状态。

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

    • 您可以解决冲突。

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

    【讨论】:

    • 我不确定第三点(修复冲突)是否适用。 OP已经修复了冲突,运行后出现错误提示git rebase --continue
    • ` % git rebase --skip :( git: builtin/am.c:1981: am_skip: Assertion !is_null_oid(&state->orig_commit)' failed. error: am died of signal 6
    【解决方案3】:

    显然,您要变基的分支也在您分支的时间之间变基,可能是清理历史记录或在另一个分支上变基。如果是这样,您需要:

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

      git rebase --onto BUDDY_BRANCH YOUR_BRANCH~ YOUR_BRANCH

    例如 您从本地 master 分支(原点/master 结帐),一个新分支 test_branch(您现在要使用当前原点/master 更新)

    git rebase --onto master test_branch~ test_branch
    

    简单来说,它的作用是获取您的分支初始父提交,在当前主节点中找到它的对应项,并基于此进行变基。

    【讨论】:

    • 这才是真正的答案!要将本地 master 分支重新定位到 origin/master,请输入 git rebase --onto origin/master master~ master
    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 2013-06-12
    相关资源
    最近更新 更多