【问题标题】:How to rebase when it says that current branch is up to date even though it isn't?当它说当前分支是最新的时如何重新设置基准,即使它不是?
【发布时间】:2016-11-30 16:59:12
【问题描述】:

我重新设置了我的分支,其效果是将一些提交置于我自己的之上。然后意识到我忘记了压缩一些提交,所以很难重置和压缩。现在我需要把这些提交带回来。但是变基再次告诉我当前分支是最新的,即使它不是。有没有办法解决这个问题?

编辑:

有两个分支:a 和 b。两者都是从 master 分支的。两者都与主人保持同步。分支 a 有一些变化。我希望分支 b 也有这些更改。我将分支 a 重新定位到 b。最新的提交来自分支 a。我的意思是在提交之前压缩三个提交。我硬重置到最新提交之前。然后我压扁了。现在我想以一种在将分支 b 合并到 master 时不会引起头痛的方式取回最新的提交。

我试过refloggit reset --hard HEAD@{n} 但同样的问题:当前分支是最新的。

【问题讨论】:

标签: git rebase


【解决方案1】:

就我而言,--force-rebase 提供了帮助。我想,在你的情况下,它会是:

git checkout b
git rebase --force-rebase a

【讨论】:

    【解决方案2】:

    如果您有提交的 id,您可以使用交互式 rebase 并手动添加它们。

    假设你的原始分支是master,你可以这样做:

    git rebase -i master
    

    你会收到这样的东西:

    pick 000000 Name of a commit
    pick 000001 Name of another commit
    

    您可以添加另一个 pick bbbbbb 与您要添加的 commitId,类似

    pick 000000 Name of a commit
    pick bbbbbb
    pick 000001 Name of another commit
    

    如果你想压缩一个提交,你可以这样做:

    pick 000000 Name of a commit
    squash bbbbbb
    pick 000001 Name of another commit
    

    壁球操作会将您的较低提交附加到前一个提交,这意味着00000

    【讨论】:

      【解决方案3】:

      如果你没有推送那个 rebase,你可以硬重置到远程仓库分支。

      git reset --hard origin/your-branch-name
      

      【讨论】:

      • 请不要多次回答同一个问题。
      • @matt 它们是不同的选项,而不是重复。
      猜你喜欢
      • 2018-04-04
      • 2013-02-28
      • 2014-05-18
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 1970-01-01
      相关资源
      最近更新 更多