无法获得如何为当前分支执行squash rebase.控制台命令将是
git rebase -i HEAD~2
Run Code Online (Sandbox Code Playgroud)
然后像往常一样压扁.但是如何在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"
Run Code Online (Sandbox Code Playgroud)
因此,在压缩之后我们将有1个提交3个文件.
有什么建议?
ssc*_*rth 54
这适用于我使用TortoiseGit 1.7.12:
TortoiseGit
- > Show log
.Rebase master onto this...
从上下文菜单中.Force Rebase
复选框,并在提交然后右键单击之间进行选择Pick
,Squash
等等,或勾选Squash ALL
复选框,在您的案件.Start Rebase
按钮,成功后变为Commit
按钮,然后Done
按下按钮.按下所有这些.请注意,在您的示例脚本中,您将压缩/修复到根提交,这是一种特殊情况,并且不能如上所述工作,因为根提交没有您可以在步骤2中选择的父提交.
reg*_*bsb 51
不要做任何以前的事情!只需使用界面组合2次提交即可.切记不要在共享仓库上组合提交.看到:
这是我使用 Tortoise Git 所做的并将存储库存储在 Assembla 上(显然是通过类似于 GitHub 的方式)。
我决定要有效地删除我的整个提交历史记录,并从头开始重新存储。我本可以删除本地 git 文件夹和 Assembla 中的相应存储库,然后重新创建它,但认为最好弄清楚如何以“正确的方式”执行此操作。
所以,这是我实现它的方式:
1) 使用 Tortoise Git,显示 repo 的日志。突出显示所有提交,右键单击它们,然后选择“合并为一个提交”。
2) 在弹出的对话框中,删除提交注释(它成为所有先前注释的组合),并将其替换为单个注释,例如 REBASE。然后启动提交。然后本地存储库将从头开始有效地启动(当然所有文件仍然添加到其中)而无需删除和重新创建它。
3) 不幸的是,您不能将其推送到 Assembla。它会拒绝这一点,坚持认为你的“头”在远程分支的后面。因此,要解决该问题,请首先转到 Assembla 中存储库的“设置”页面。启用“允许 – 强制推送”。
4) 现在执行“强制推送”。我不知道 Tortoise Git 是否有一个 gui 选项,但是通过命令提示符很容易做到:
cd [your repo folder]
git push -f origin
Run Code Online (Sandbox Code Playgroud)
完毕!
更新:
要使用 TortoiseGit“强制推送”,在推送对话框中有用于强制“已知更改”和“未知更改”的复选框。我不确定有什么区别,但它们都导致使用 git --force 开关。首先尝试“已知更改”。
归档时间: |
|
查看次数: |
45476 次 |
最近记录: |