是否可以在SourceTree中压缩?我看到你显然可以“拖放”提交以压制它们。但是,当我这样做时,它只突出显示了几个提交。
答案 0 :(得分:25)
As of version 1.5,您现在可以进行交互式rebase,这将允许您压缩。
SourceTree for Mac since version 1.6(强调我的)可以使用交互式rebase:
git rebase –interactive
命令允许您在创建提交后重新组织提交(但在将它们公开之前),现在您可以在SourceTree中执行此操作。 将多个提交合并(压缩)或重新排序,只需拖动&amp; drop。您还可以更改提交消息,或编辑提交的内容。只需右键单击日志中的提交,然后选择“以<sha>
交互式重新启动子项”即可启动该过程。
显然压缩提交是SourceTree version 1.6 for the Mac中的一项功能。
但是,该功能似乎在Windows版本的SourceTree中不可用,该版本目前仍处于1.0.8版本。
您仍然可以选择使用命令行压缩提交:
git rebase -i <sha-of-base-commit>
在TODO
列表中,在提交旁边放一个s
(用于压缩)以压缩上一次提交:
pick e953225 Add meow meow meow
s def892d Add master
要了解有关如何使用命令行压缩提交的详情,请参阅Squashing Commits中的FREE online Pro Git book。
答案 1 :(得分:6)
从1.4.1.0开始,Windows用户仍然没有壁球。但是,您可以手动获得相同的结果。
将分支A压入分支B:
提交。
1. 2. 3. 4.
* <- [A][C] * <- [A] * <- [A] * <- [A]
| | | |
* * o <- [C] with changes * o <- [C][B] with changes * * <- [C][B] committed
| |/ |/ |/
* <- [B] * <- [B] * *
| | | |
: : : :
如果您不需要保留A的位置,则无需创建C.
我建议在执行这些操作时打开gitk
,因为在关闭之前,您可以看到所有已分离的提交。 (我想在SourceTree中看到这种慷慨)
至少,reflog是你的朋友。
答案 2 :(得分:5)
右键单击父提交,然后选择“交互式Rebase子项”#39;。之后,您将能够拖放到壁球提交中。
答案 3 :(得分:1)
这个答案适用于任何平台上的大多数Sourcetree版本,因为我只使用旧功能。你想到它之后很简单。像往常一样,它只在公开工作之前有效。我用它来创造&#34; tidy&#34;提交在共享存储库中,同时经常在我自己的本地存储库中提交。假设您在本地分支myfeature
。假设您在分支origin/myfeature
之前提交了几个提交。您可以在整个程序中留在myfeature
分支内,这样您就不会影响其他任何人的工作。
执行&#34;将当前分支重置为此提交&#34;在最新发布的提交。这是标记为origin/myfeature
的提交。混合重置将保留您的所有更改。务必检查您的重置是否混合。 (如果您无意中进行了硬重置,您将失去工作......)
暂停您的更改(照常)。不要忘记你在途中添加或删除的文件!
提交。写一个好的提交消息,总结所有你自己的(本地)提交消息,因为它们丢失了。
在第1步中,您已压缩所有内容并清理了本地提交。您仍然在自己的功能分支上,因此您不会影响其他任何内容。如果您感到不安全,请在执行任何其他操作之前标记您的最新提交。只是为了安全保管。通过这种方式,您可以随时硬重置到该标签,以防出现问题。如果一切顺利,只需删除该标签即可清理您的提交历史记录。
答案 4 :(得分:0)
要压缩最近的提交,如果要持续10次提交
1) git reset HEAD~10
2) git add .
3) git commit -am "single commit message for 10 last changes"
4) git push --force
答案 5 :(得分:-6)
他们刚刚在Windows版本中添加了对“壁球”的支持。