在SourceTree中壁球

Mil*_*les 27 git atlassian-sourcetree

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

小智 26

更新的答案

SourceTree for Windows

从版本1.5开始,您现在可以执行交互式rebase,这将允许您压缩.

SourceTree for Mac

从版本1.6开始,SourceTree for Mac中提供了交互式rebase (强调我的):

git rebase –interactive命令允许您在创建提交后重新组织提交(但在公开之前),现在您可以在SourceTree中执行此操作.将多个提交合并(压缩)在一起,或者只需通过拖放即可重新排序.您还可以更改提交消息,或编辑提交的内容.只需右键单击日志中的提交,然后选择"以<sha>交互方式重新启动子项"即可启动该过程.

老答案

显然,压缩提交是SourceTree 1.6 for Mac中的一项功能.

但是,该功能似乎在Windows版本的SourceTree中不可用,该版本目前仍处于1.0.8版本.

使用命令行

您仍然可以选择使用命令行来压缩提交:

git rebase -i <sha-of-base-commit>
Run Code Online (Sandbox Code Playgroud)

TODO列表中,s在提交旁边放一个(用于压缩)压缩到上一次提交:

pick e953225 Add meow meow meow
s def892d Add master
Run Code Online (Sandbox Code Playgroud)

要了解更多关于如何壁球使用命令行提交,见挤压承诺,从免费的在线临Git的书.


sas*_*mar 8

如果您想保留最后 10 次提交,请压缩您最新的提交

1) git reset HEAD~10
2) git add .
3) git commit -am "single commit message for 10 last changes"
4) git push --force
Run Code Online (Sandbox Code Playgroud)


sni*_*nip 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]                    *                              *
        |              |                           |                              |
        :              :                           :                              :
    
    Run Code Online (Sandbox Code Playgroud)

如果您不需要保持A的位置,则无需创建C.

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

至少,reflog是你的朋友.


小智 6

右键单击父提交,然后选择"以交互方式重新启动子项".在那之后,你将能够拖放到壁球提交.