如何使用TortoiseGit重新排序提交(rebase)

时间:2014-12-22 21:23:15

标签: git version-control git-rebase tortoisegit

我想将几个单一提交推送到我们的主git存储库。在做了一些阅读之后虽然听起来我必须重新排序提交才能做到这一点,因为git只会将所有提交推送到指定的提交。首先,我真的不明白为什么它不仅仅是内置于git(我是一个git新手)。无论如何,我需要重新排序提交,并且我使用TortoiseGit。我已经找到了如何进入rebase菜单,但我不知道可以选择哪些选项。要进入rebase菜单我:

  1. 右键单击目录并选择TortoiseGit / Show Log
  2. 浏览并选择了我想重新排序的提交。
  3. 选择" Rebase" master"到这个"。
  4. 我提出了一个对话框,但我不知道任何字段的含义。

    首先,有分支字段,我看到master和一些遥控器选项。我没有任何分支机构。我克隆了一个存储库,到目前为止已经从本地克隆工作了,为什么有一个分支选项?

    其次,有一个小按钮,左右箭头相互叠加。这是什么按钮?

    第三,有一个上游字段,默认情况下它选择了存储库的SHA。当我点击该字段时,我会看到FETCH_HEAD,master和一些遥控器选项。

    我希望看到一个提交列表,我可以上下移动我的提交。通过检查Force Rebase选项,我可以看到提交列表。这是我需要做的吗?我有什么打算,我以为我只是想做一个普通的老底板?

    同样,我是一个git新手,感谢任何帮助。

4 个答案:

答案 0 :(得分:10)

你走在正确的轨道上。 Force Rebase是您需要使用的选项。使用Force Rebase选项查看提交后,选择提交并使用向上/向下按钮重新提交提交。根据需要订购后按下“开始”“折扣”按钮。

关于为什么需要选择Force Rebase; Rebase通常在您希望将当前分支基于较新的提交时完成。由于您当前的分支已经基于您选择的提交,因此没有任何内容可以重新定义。在您的情况下,您只是尝试重新排序提交而不是重新定位。使用rebase没有错。只需要明确选择Force Rebase。

答案 1 :(得分:1)

这是一种解决方法。这是我发现的:

上游和下游的定义:Definition of "downstream" and "upstream"

FETCH_HEAD的定义:在Google中搜索“git中的FETCH_HEAD是什么”。

我可以在TortoiseGit中使用git命令行工具吗?:Can I use command-line Git tools and TortoiseGit simultaneously?

如何使用git重新排序提交:http://blog.dennisrobinson.name/reorder-commits-with-git/

在这篇博文中,他建议使用:

git rebase -i HEAD~3

我用过

git rebase -i <SHA_of_oldest_commit>

代替。这将为您提供从头到SHA_of_oldest_commit的提交列表。为了重新排序提交,我只是按照我想要的方式对行进行重新排序并保存并关闭文件。

答案 2 :(得分:0)

即使在以上答案的帮助下,我也无法在TortoiseGit中重新排列提交。最后,我最终安装了具有更好的UI的Source Tree,在其中您可以通过 Down 一键点击(重新设置 Hash 子级的基础...从而重新排序历史记录...)和向上按钮。

答案 3 :(得分:0)

这是遵循geoji's answer的完整步骤。

  1. 在存储库的根目录中打开TortoiseGit“显示日志”
  2. 右键单击不是头部的提交,然后选择“将“主”重新设置到此...”。
  3. 在出现的“重新设置”对话框中。将上游更改为“ FETCH_HEAD”
  4. 选中“强制变基”
  5. 您的提交历史记录现在应该显示在“ Rebase”对话框中
  6. 单击要移动的提交并使用“上”和“下”按钮
  7. 根据需要对提交进行排序后,按“开始重新设置”
  8. 对于要重新排序的每个提交,它将更改提交哈希值