首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我一次只能压缩2个提交吗?

我一次只能压缩2个提交吗?
EN

Stack Overflow用户
提问于 2015-12-06 14:06:14
回答 4查看 693关注 0票数 1

当我试图以交互方式将多个提交重新定址(挤压)为一个提交时,它只挤压最后两个提交,因此我最终不得不多次挤压。

我正在使用源码树,但我已经尝试在控制台中执行此操作,并获得相同的结果。有什么想法吗?

EN

回答 4

Stack Overflow用户

发布于 2015-12-06 14:12:03

试一下-

代码语言:javascript
运行
复制
$ git rebase -i HEAD~4

然后

代码语言:javascript
运行
复制
pick 01d1124 commit msg 1
squash 6340aaa commit msg 2
squash ebfd367 commit msg 3
squash 30e0ccb commit msg 4

保存并退出编辑器

你可以在Sourcetree中做同样的事情-

http://kwnetzwelt.net/wordpress/archives/2440

票数 7
EN

Stack Overflow用户

发布于 2015-12-06 17:55:31

(交互式)rebase技术上一次只压缩两个提交--很简单,因为所谓的"rebase脚本“通常被要求在git rebase进行之前编辑,一次只对一个提交应用一个操作。

然而,这不会改变结果,因为从逻辑上讲,一次压缩N个提交和逐个提交之间没有区别。在你的rebase脚本中,你只需要为一系列相邻的提交选择动作"squash“(也可以阅读”fixup“--它通常比”squash“更方便),然后git rebase就会这样工作:

  1. 获取标记为"squash“的提交。将其压缩到上一次提交-使用应用到它的新内容有效地重新编写它(与git apply).
  2. Given新状态一样,转到步骤1。;-)

注意,还有git merge--squash命令行选项。这一次真的一次压缩了几个提交。

票数 2
EN

Stack Overflow用户

发布于 2015-12-06 14:24:56

假设您的分支指向您想要挤压的最后一个提交,您可以使用此技巧:

代码语言:javascript
运行
复制
git reset --soft <some older commit>
git commit --amend

现在您已经用一个新的<some older commit>替换了它,它包含了两者之间的所有内容,以及它们的内容。

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

https://stackoverflow.com/questions/34114601

复制
相关文章

相似问题

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