Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 源树中的南瓜_Git_Atlassian Sourcetree - Fatal编程技术网

Git 源树中的南瓜

Git 源树中的南瓜,git,atlassian-sourcetree,Git,Atlassian Sourcetree,可以在SourceTree中挤压吗?我看到,显然,您可以“拖放”提交,以便压扁它们。但是,当我这样做时,它只会突出显示几个提交。更新了答案 用于Windows的SourceTree ,您现在可以进行交互式重设,这将允许您挤压 Mac的SourceTree 交互式重基已在(emphasis mine)中提供: git-rebase–interactive命令允许您在创建提交后(但在将其公开之前)重新组织提交,现在您可以在SourceTree中执行此操作通过拖放操作将多个提交组合(挤压)在一起,或对

可以在SourceTree中挤压吗?我看到,显然,您可以“拖放”提交,以便压扁它们。但是,当我这样做时,它只会突出显示几个提交。

更新了答案 用于Windows的SourceTree ,您现在可以进行交互式重设,这将允许您挤压

Mac的SourceTree 交互式重基已在(emphasis mine)中提供:

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

旧答案 显然,压缩提交是中的一个功能

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

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

git rebase -i <sha-of-base-commit>

要了解有关如何使用命令行挤压提交的更多信息,请参阅。

他们刚刚在Windows版本中添加了对“挤压”的支持


从1.4.1.0开始,Windows用户仍然没有壁球。但是,您可以手动获得相同的结果

要将分支A压入分支B,请执行以下操作:

  • 从a创建一个分支,并将其称为C
  • 软模式下将C重置为B
  • 看看B
  • 承诺

    1.              2.                          3.                             4.
        * <- [A][C]    * <- [A]                    * <- [A]                       * <- [A]
        |              |                           |                              |
        *              * o <- [C] with changes     * o <- [C][B] with changes     * * <- [C][B] committed
        |              |/                          |/                             |/
        * <- [B]       * <- [B]                    *                              *
        |              |                           |                              |
        :              :                           :                              :
    
    1。2.3.4.
    * 
    在父提交上单击鼠标右键,然后选择“以交互方式重新设置的子项的基础”。之后,您将能够拖放以挤压提交

    在您自己的地方特色分支机构内进行老派压榨 这个答案适用于任何平台上的大多数版本的Sourcetree,因为我只使用旧功能。想想看,这很简单。和往常一样,它只在公开你的作品之前起作用。我使用它在共享存储库中创建“整洁”提交,同时在我自己的本地存储库中频繁提交。假设您在本地分行
    myfeature
    。假设您在分支
    origin/myfeature
    之前有几个提交。在整个过程中,您可以留在branch
    myfeature
    中,这样您就不会影响其他人的工作

    第一步 在最新发布的提交上执行“将当前分支重置为此提交”。这是标记为
    origin/myfeature
    的提交。混合重置将保留所有更改。一定要检查你的重置是混合的。(如果你不小心做了一个硬重置,你将失去你的工作…)

    步骤2 阶段性的改变(像往常一样)。不要忘记在途中添加或删除的文件

    步骤3 承诺。编写一个好的提交消息,总结您自己的所有(本地)提交消息,因为它们已丢失

    完成!
    在步骤1中,您已经挤压了所有内容并清理了本地提交。您仍然在自己的特性分支上,因此您没有影响其他任何东西。如果你感到不安全,在做任何其他事情之前,给你最近的承诺贴上标签。只是为了安全保管。以这种方式,您可以随时硬重置到该标签,以防出现问题。如果一切正常,只需删除该标签即可清理提交历史记录。

    若要最后10次提交,请挤压最新提交

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

    很抱歉,我看不到1.2发行说明中提到支持“squash”的部分。免责声明:只有在“公开之前”尝试它,它才可能正常工作。我已经将以前的更改推送到了
    远程
    ,然后在本地将其还原,并在尝试将
    推送到
    远程
    时出错。由于我不需要旧的更改,我使用@Ricardo中的CLI
    git push--force origin e3f1e37:master
    修复了此问题。但是,强制推送和更改已公开的历史记录时应该非常小心,因为您可能会导致其他在旧承诺基础上工作的人失去工作。
    1) git reset HEAD~10
    2) git add .
    3) git commit -am "single commit message for 10 last changes"
    4) git push --force