git-如何使用tortoisegit执行变基(压扁)

无法获取如何为当前分支执行壁球重新设置。 控制台命令将是

git rebase -i HEAD~2

然后像往常一样壁球。 但是在TGit中该怎么做?

初始化案例的脚本

git init .
touch 1
git add 1
git commit -m "1"
touch 2
git add 2
git commit -m "2"
touch 3
git add 3
git commit -m "3"

结果,压扁后,我们将有3个文件进行1次提交。

有什么建议吗?

zerkms asked 2020-08-04T03:42:52Z
5个解决方案
54 votes

这对我使用TortoiseGit 1.7.12有用:

  1. 右键单击要进行交互式变基的工作目录,然后从上下文菜单中选择Force Rebase-> Pick
  2. 在出现的“日志消息”对话框中,右键单击您不想再作为基准的最新提交,然后从上下文菜单中选择Force Rebase
  3. 在出现的“重新设置”对话框中,勾选“ Force Rebase”复选框,然后右键单击提交以在PickStart Rebase等之间进行选择,或者在您的情况下勾选“ Commit”复选框。
  4. 按下Start Rebase按钮,成功后将变成Commit按钮,然后变成Done按钮。 按所有。

请注意,在示例脚本中,您将压缩/修复根提交,这是一种特殊情况,因此无法按上述方式工作,因为根提交没有父级,您可以在步骤2中选择父级。

sschuberth answered 2020-08-04T03:54:54Z
49 votes

不要做任何以前的! 只需使用该接口合并2次提交即可。 记住不要合并共享仓库中已经存在的提交。看到:Right click 2 commits

regisbsb answered 2020-08-04T03:54:09Z
3 votes

这是我使用Tortoise Git所做的并将回购存储在Assembla上(显然是通过类似于GitHub的方式)。

我决定要有效删除我的整个提交历史记录,并从头开始重新进行回购。 我本可以在Assembla中删除本地git文件夹和相应的repo,然后重新创建它,但认为最好弄清楚如何以“正确的方式”执行此操作。

因此,这就是我的实现方式:

1)使用Tortoise Git显示回购记录。 突出显示所有提交,右键单击它们,然后选择“组合为一个提交”。

2)在弹出的对话框中,删除提交注释(它将成为所有先前注释的组合),并用单个注释替换它,例如 重新存储。 然后启动提交。 然后将有效地从头开始本地存储库(当然,所有文件仍会添加到其中),而不必删除并重新创建它。

3)不幸的是,您不能只将其推入Assembla。 它会拒绝这样做,坚持认为您的“头”位于远程分支的后面。 因此,要解决该问题,请首先转到Assembla中存储库的“设置”页面。 启用“允许强制推送”。

4)现在执行“强制推送”。 我不知道Tortoise Git是否为此提供了gui选项,但是通过命令提示符很容易做到:

cd [your repo folder]
git push -f origin

做完了!

更新:

要使用TortoiseGit“强制推送”,在推送对话框中有复选框可以强制“已知更改”和“未知更改”。 我不确定有什么区别,但是它们都导致使用git --force开关。 首先尝试“已知更改”。

BuvinJ answered 2020-08-04T03:55:57Z
1 votes
  • 转到Cherry Pick selected commits...,然后在您当前的提交中添加标签(例如“ tmp”)。
  • 重置为您不想更改的历史记录中的第一次提交。
  • 如果看不到所有提交,则在日志底部切换Cherry Pick selected commits...
  • 然后选择所有较新的提交,然后右键单击它们:Cherry Pick selected commits...
  • 现在您处于交互式变基模式。 在那里,您可以执行交互式变基的常见操作。
armin.miedl answered 2020-08-04T03:56:35Z
-1 votes

一种方法是:转到日志对话框,然后选择“以*为基础”,然后选中“强制”复选框,并将提交标记为“压扁”(例如,通过键入“ q”)。

Sven answered 2020-08-04T03:56:56Z
translate from https://stackoverflow.com:/questions/12528854/how-to-perform-rebase-squash-using-tortoisegit