首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用tortoisegit执行rebase (squash)

如何使用tortoisegit执行rebase (squash)
EN

Stack Overflow用户
提问于 2012-09-21 18:33:09
回答 6查看 63.4K关注 0票数 51

无法获取如何为当前分支执行squash rebase。控制台命令为

代码语言:javascript
复制
git rebase -i HEAD~2

然后像往常一样挤压。但是如何在TGit中做同样的事情呢?

初始化案例的脚本

代码语言:javascript
复制
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个文件。

有什么建议吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-01-23 19:04:09

您可以使用GUI组合两个相邻的提交,如下所示。请记住,不要在共享存储库上进行组合提交。请参见:

票数 61
EN

Stack Overflow用户

发布于 2012-09-27 03:29:38

这对使用TortoiseGit 1.7.12的我来说是有效的:

  1. 右键单击您要执行交互式rebase的工作目录,并从上下文菜单中选择TortoiseGit -> Show log
  2. 在出现的"Log Messages“对话框中,右键单击您不想再执行rebase的最近提交,然后从上下文菜单中选择Rebase master onto this...。在出现的"Rebase”对话框中,勾选D11复选框,然后右键单击提交,以在D12、D13等之间进行选择。或者在您的情况下勾选Squash ALL复选框。
  3. 按下Start Rebase按钮,如果成功,该按钮将变为Commit按钮,然后变为Done按钮。全部按下。

请注意,在您的示例脚本中,您将压缩/修复到根提交which is a special case,并且不会像上面描述的那样工作,因为根提交没有可以在步骤2中选择的父级。

票数 64
EN

Stack Overflow用户

发布于 2015-08-07 22:33:37

下面是我使用Tortoise所做的事情&将存储库存储在Assembla上(显然是通过类似于GitHub的方式)。

我决定要有效地删除我的整个提交历史,并从头开始存储库。我本可以删除本地git文件夹和Assembla中相应的repo,然后重新创建它,但我认为最好弄清楚如何以“正确的方式”做到这一点。

所以,下面是我是如何做到的:

1)使用Tortoise Git,展示repo的日志。突出显示所有提交,右键单击它们,然后选择“合并为一个提交”。

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

3)不幸的是,你不能直接把它推给Assembla。它会拒绝这一点,坚持你的“头”在远程分支后面。因此,为了解决第一个问题,请转到Assembla中存储库的“设置”页面。开启“允许-force推送”。

4)现在执行“强制推流”。我不知道Tortoise是否有这样的gui选项,但通过命令提示符很容易做到:

代码语言:javascript
复制
cd [your repo folder]
git push -f origin

完成了!

更新:

要使用TortoiseGit“强制推送”,在推送对话框中有用于强制“已知更改”和“未知更改”的复选框。我不确定有什么不同,但它们都导致使用git --force开关。试着从“已知更改”开始。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12528854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档