git 源树中的挤压

uinbv5nw  于 2023-02-11  发布在  Git
关注(0)|答案(7)|浏览(168)

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

g52tjvyc

g52tjvyc1#

更新答案

Windows源目录树

As of version 1.5,你现在可以做交互式的变基,这将允许你挤压。

适用于Mac的源目录树

交互式变基在SourceTree for Mac since version 1.6中已经可用(强调我的):
git rebase –interactive命令允许您在创建提交后重新组织提交(但在您将它们公开之前),现在您可以在SourceTree中执行此操作。**合并(squash)多个提交在一起,**或重新排序,**只需通过拖放即可。**您还可以更改提交消息,或者编辑提交的内容。只需右键单击日志中的某个提交,然后选择“交互式地重定<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

要了解更多关于如何使用命令行压缩提交的信息,请参见FREE online Pro Git book中的Squashing Commits。

kgsdhlau

kgsdhlau2#

右键点击父提交并选择“交互式地重定子提交的基”。之后,您就可以通过拖放来压缩提交了。
https://community.atlassian.com/t5/Sourcetree-questions/In-SourceTree-how-do-I-squash-commits/qaq-p/345666#M10317

34gzjxbg

34gzjxbg3#

压缩最近的提交,如果你想要最后10次提交

1) git reset HEAD~10
2) git add .
3) git commit -am "single commit message for 10 last changes"
4) git push --force
q1qsirdb

q1qsirdb4#

截至www.example.com,Windows用户仍然没有壁球。然而,你可以用手得到同样的结果。1.4.1.0, Windows users still don't have squash. However, you can get the same result by hand.
要将分支A挤压到分支B中,请执行以下操作:
1.从A创建一个分支,并将其命名为C。
1.在模式下将C复位为B。
1.看看B
1.承诺。

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是你的朋友。

pes8fvy9

pes8fvy95#

在你自己的地方特色分支中进行老派的挤压

这个答案适用于任何平台上的大多数版本的源树,因为我只使用旧的功能。这是相当简单的,在你想到它之后。像往常一样,它只在公开你的工作之前有效。我用它来创建共享仓库中的"整洁"提交。同时在我自己的本地仓库中频繁提交。假设你在本地分支myfeature中。假设你在分支origin/myfeature之前提交了几次。在整个过程中,您可以留在分支myfeature内,因此不会影响其他任何人的工作。

步骤1

在最近发布的提交上执行"重置当前分支到此提交",即标记为origin/myfeature的提交。混合重置将保留所有更改。请确保检查重置是混合的。(如果不小心执行了硬重置,您将丢失您的工作...)

第二步

暂存您的更改(像往常一样)。不要忘记您在此过程中添加或删除的文件!

步骤3

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

搞定!

在步骤1中,你已经压缩了所有内容并清理了本地提交。你仍然在自己的特性分支上,所以你没有影响其他任何东西。如果你觉得不安全,在做任何事情之前,给你最近的提交贴上标签。只是为了安全起见。这样你就可以随时硬重置到那个标签,以防出错。如果一切顺利,只需要移除那个标签来清理你的提交历史。

lsmd5eda

lsmd5eda6#

  • tl; dr你必须选择你想要开始的提交,并交互式地进行rebase(因为squashing是rebase(和merge)的一个git选项)。*

选择一个提交,例如ab12c3,你想将它添加为压缩提交。右键单击-〉* 交互式重定ab12c3的子项的基... *
在新对话框中,
1.根据需要重新排序提交
1.然后选择每个提交(不是复选标记!而是选择行)
1.然后 * 与前一个挤压 * 最后
1.压缩提交的 * 编辑消息 *。
其他信息:最终所有的提交和压缩后的提交都基于提交ab12c3,这可能与你已经推送到远程节点的不同,如下面的指南所述,你需要在激活 * force push * 的情况下进行 * push *。
完美的指南(与截图)在这里找到:https://www.linkedin.com/pulse/how-squash-commit-using-source-tree-ardall-leonardo

6tr1vspr

6tr1vspr7#

他们只是在Windows版本中添加了对“壁球”的支持。
SourceTree version 1.2 for Windows

相关问题