无法获取如何为当前分支执行squash rebase。控制台命令是
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"
结果在挤压之后我们将有1个提交3个文件。
任何提案?
答案 0 :(得分:52)
这适用于我使用TortoiseGit 1.7.12:
TortoiseGit
- >上下文菜单中的Show log
。Rebase master onto this...
。Force Rebase
复选框,然后右键点击提交,在Pick
,Squash
等之间进行选择,或勾选{{在你的情况下1}}复选框。Squash ALL
按钮,成功后变为Start Rebase
按钮,然后进入Commit
按钮。按下所有这些。请注意,在您的示例脚本中,您将压缩/修复根提交which is a special case并且不能如上所述工作,因为根提交没有您可以在步骤2中选择的父级。
答案 1 :(得分:47)
不要做任何以前的事情!只需使用界面组合2次提交即可。切记不要在共享仓库上组合提交。 看到:
答案 2 :(得分:3)
这是我使用Tortoise Git& amp;将回购存储在Assembla上(显然与GitHub相似)。
我决定要有效删除整个提交历史记录,并从头开始重新启动回购。我本可以在Assembla中删除本地git文件夹和相应的repo,然后重新创建它,但认为最好弄清楚如何以“正确的方式”执行此操作。
所以,这就是我实现它的方式:
1)使用Tortoise Git,显示repo的日志。突出显示所有提交,右键单击它们,然后选择“合并为一个提交”。
2)在弹出的对话框中,删除提交注释(它成为所有先前注释的组合),并将其替换为单个注释,例如: REBASE。然后启动提交。然后,本地存储将从头开始有效地启动(当然所有文件仍然添加到其中),而无需删除并重新创建它。
3)不幸的是,你不能把它推到Assembla。它将拒绝这一点,坚持你的“头”在远程分支后面。因此,要解决这个问题,首先要转到Assembla中repo的“设置”页面。启用“允许-force推送”。
4)现在执行“强制推送”。我不知道Tortoise Git是否有这样的gui选项,但通过命令提示符很容易做到:
cd [your repo folder]
git push -f origin
完成!
更新:
使用TortoiseGit“强制推送”,在推送对话框中有复选框以强制“已知更改”和“未知更改”。我不确定区别是什么,但它们都导致使用git --force开关。首先尝试“已知更改”。
答案 3 :(得分:1)
Show Log
,然后在当前提交时进行标记(例如“ tmp”)。 All Branches
。Cherry Pick selected commits...
答案 4 :(得分:1)
您可以从 Rebase 窗口执行此操作。这个视频很好地涵盖了它:https://youtu.be/qrMubRPkkrE?t=490
如视频所示:
TortoiseGit
/Rebase...
Upstream:
改为 FETCH_HEAD
Pick ALL
改为 Squash ALL
Start Rebase
答案 5 :(得分:-1)
一种方法是:转到日志对话框并选择“rebase into *”然后选中“强制”复选框并标记“压缩”提交(例如输入“q”)。