Git 重新调整到旧的提交

Git 重新调整到旧的提交,git,Git,我有三项承诺: * d868098 Three * 865eb70 Two * 6dd085d One 我想把“三”直接移到“一”上: * 865eb70 Two | | * d868098 Three |/ * 6dd085d One 然而,我所尝试的一切都不起作用。例如,git-rebase-on 6dd0 865e d868只需倒回磁头,但不重新设置任何位置。如何使用重设基础 更新:好的,git-rebase——在6dd0 865e d868上运行。它以前对我不起作用,因为我在一个只

我有三项承诺:

* d868098 Three
* 865eb70 Two
* 6dd085d One
我想把“三”直接移到“一”上:

* 865eb70 Two
|
| * d868098 Three
|/
* 6dd085d One
然而,我所尝试的一切都不起作用。例如,
git-rebase-on 6dd0 865e d868
只需倒回磁头,但不重新设置任何位置。如何使用
重设基础



更新:好的,
git-rebase——在6dd0 865e d868上运行。它以前对我不起作用,因为我在一个只有空提交的测试存储库上尝试了这一点。一旦我创建了有意义的提交,一切都按预期进行。我将避免在将来测试时使用空提交

要做到这一点,您至少需要两个分支

我假设您在
主机
分支上,该分支指的是
*d868098三个

  • git复位——硬865eb70
    (从
    主机中删除
    *d868098三个
  • git签出-b三分支机构
    (创建并移动到新分支机构)
  • git签出6dd085d
  • git cherry pick d868098
    (pick
    *d868098 Three
    Three_分支机构
    分支机构)
  • 现在树在下面

    * 865eb70 Two (master)
    |
    | * d868098 Three (three_branch)
    |/
    * 6dd085d One
    

    谢谢我知道我可以用git cherry pick
    实现这一点。但是,我想知道如何使用
    git-rebase
    ,因为我可能需要移动多个提交。另外,我还想了解有关重定基址的所有内容。好的,如果三部分的提交比两部分的提交要多得多,那么在打开的编辑器中使用
    git-rebase-I
    并删除两部分就更容易了。不过,使用
    git-rebase--on
    来实现这一点难道不可能吗?我不明白为什么我在OP中提到的命令不起作用。Regardsonto也有效。正如我所说,你需要一个分支。请尝试
    git-rebase--6dd0 865e主机上的
    (修复分支名称)。我想这就是你想要的,我不喜欢。它只是移动“master”指向第一个提交。实际上没有任何内容会被重定基址。您的重定基址命令看起来是正确的。一定还有别的事。重新基础是否成功完成,或者是否因为存在冲突而停止?显示命令的输出。谢谢。你是对的。这不起作用,因为我在一个只有空提交的存储库上进行测试。我现在已经更新了OP。