在SourceTree中壁球

时间:2013-08-21 03:20:08

标签: git atlassian-sourcetree

是否可以在SourceTree中压缩?我看到你显然可以“拖放”提交以压制它们。但是,当我这样做时,它只突出显示了几个提交。

6 个答案:

答案 0 :(得分:25)

更新答案

SourceTree for Windows

As of version 1.5,您现在可以进行交互式rebase,这将允许您压缩。

适用于Mac的SourceTree

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. 从A创建一个分支并将其命名为C.
  2. 模式下将C重置为B.
  3. 查看B.
  4. 提交。

    1.              2.                          3.                             4.
        * <- [A][C]    * <- [A]                    * <- [A]                       * <- [A]
        |              |                           |                              |
        *              * o <- [C] with changes     * o <- [C][B] with changes     * * <- [C][B] committed
        |              |/                          |/                             |/
        * <- [B]       * <- [B]                    *                              *
        |              |                           |                              |
        :              :                           :                              :
    
  5. 如果您不需要保留A的位置,则无需创建C.

    我建议在执行这些操作时打开gitk,因为在关闭之前,您可以看到所有已分离的提交。 (我想在SourceTree中看到这种慷慨)

    至少,reflog是你的朋友。

答案 2 :(得分:5)

右键单击父提交,然后选择“交互式Rebase子项”#39;。之后,您将能够拖放到壁球提交中。

答案 3 :(得分:1)

旧学校在您自己的本地专题分会中徘徊

这个答案适用于任何平台上的大多数Sourcetree版本,因为我只使用旧功能。你想到它之后很简单。像往常一样,它只在公开工作之前有效。我用它来创造&#34; tidy&#34;提交在共享存储库中,同时经常在我自己的本地存储库中提交。假设您在本地分支myfeature。假设您在分支origin/myfeature之前提交了几个提交。您可以在整个程序中留在myfeature分支内,这样您就不会影响其他任何人的工作。

第1步

执行&#34;将当前分支重置为此提交&#34;在最新发布的提交。这是标记为origin/myfeature的提交。混合重置将保留您的所有更改。务必检查您的重置是否混合。 (如果您无意中进行了硬重置,您将失去工作......)

第2步

暂停您的更改(照常)。不要忘记你在途中添加或删除的文件!

第3步

提交。写一个好的提交消息,总结所有你自己的(本地)提交消息,因为它们丢失了。

完成!

在第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版本中添加了对“壁球”的支持。

SourceTree version 1.2 for Windows