首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git - squash整个分支-一行squash命令

Git - squash整个分支-一行squash命令
EN

Stack Overflow用户
提问于 2014-12-30 01:24:34
回答 7查看 10.5K关注 0票数 21

当我在编写新代码的时候,我会做很多小的提交来跟踪我的更改。然而,我的公司更喜欢将每个特性作为单个提交提交。因此,解决方案是将我的整个(本地)分支压缩为一个提交。

如何在不使用git rebase --interactive并将所有提交的pick更改为squash的情况下压缩整个分支?

EN

回答 7

Stack Overflow用户

发布于 2014-12-30 07:26:19

我的首选方法是双线性方法(不包括下面的步骤1和4)。好处是您不需要知道/记录任何提交ID,您可以编写一个简单的别名来执行所有涉及的步骤,并且您实际上将整个分支移动到 so /master上,因此实际合并到master中可以是快进的,并且不会有任何冲突。

首先,我的假设是:

,,

  • ,你正在处理一个叫做my-feature-branch的分支。此分支与master存在多次提交差异;这是已签出分支。origin/master
  • 您的本地master跟踪远程分支要将my-feature-branch中的所有提交压缩到当前origin/master状态之上的单个提交中(而不是您的本地master,这可能已过期)
  • 所有更改都已提交,您没有未转移的更改(这些更改将在all期间丢失

我的流程如下:

  1. Fetch,因此origin/master是最新的:

$ git fetch

  • 通过将本地分支重置为指向origin/master来丢弃所有提交

$ git origin/master

  • Merge --将分支先前状态中的所有旧更改混合到索引中

$ git HEAD@{1}

  • Commit --squash合并您的更改- Git将在编辑器中预先填充一条提交消息,其中包含来自挤压提交

的所有提交消息

我提到的简单别名是:

代码语言:javascript
复制
alias squash="git fetch; git reset --mixed origin/master; git merge --squash HEAD@{1}"
票数 18
EN

Stack Overflow用户

发布于 2019-09-25 22:38:36

这是git reset --soft的一个完美用例。

假设您有一个提交历史记录

代码语言:javascript
复制
D   Your latest patch
C   Your second patch
B   Your first patch
A   Someone else's work

您没有阶段性更改,git statusgit loggit show会告诉您当前正在提交D。

然后,git reset --soft B将获取提交CD的累积更改,并将它们暂存以进行提交。然后,git commit --amend会将这些更改“合并”到提交B中。

使用方法如下:

代码语言:javascript
复制
git reset --soft B
git commit --amend

第二个命令将打开编辑器,并提供编辑提交消息的机会。

请注意,如果您在开始此流程之前已经进行了阶段性更改(即,您已经完成了git add XXX,但没有使用git commit进行后续操作),那么这些阶段性更改也将被合并到提交中。

票数 10
EN

Stack Overflow用户

发布于 2014-12-30 07:29:10

最好的选择可能是在合并时使用git merge --squash。这将使您的分支保持原样,这通常更容易进行故障排除,因为您会有一些“我在提交Z中更改了特定功能”的概念,并且查看该特定提交时,您已经了解了您对多个文件所做的任何更改的所有上下文-查看单个提交是您开发路径的压缩结果,这会使您更难记住“哦,是的,我还必须在不同的文件中更改这另一件事……”。当你的整个路径都可用时,你也可以使用git bisect --在被挤压的情况下,它所能告诉你的就是“这个巨大的提交破坏了一些东西”。

使用git merge --squash的结果是在您要“合并”到的分支上执行一次提交,其中包含来自您的分支的累积更改,但它不会影响您的原始分支。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27693286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档