当前位置: 首页 > 知识库问答 >
问题:

git - 如何合并指定一段多个commit之间的提交?

南宫书
2023-09-16

目前我知道是用

git rebase -i  [startpoint]  [endpoint]

但是每次都卡在了这个状态,跳到了游离的分支上
image.png

想请问这个下一步要如何做,才能达到我想把这之间的commit合并成一个的目的呢?

共有2个答案

饶曦之
2023-09-16

说起来奇怪,最近使用 Git 也是遇到这个问题。

但是当我使用 GUI 工具的时候倒是可以正确的 squash 这些提交,通过查看 GUI 执行的命令,发现他们执行的命令中只包含了一个 <COMMIT ID>,也就是说会编辑 <COMMIT ID> ~ HEAD 之间的信息。

我尝试使用一个 <COMMIT ID> 进行 rebase 的时候确实符合预期了,没有出现分离的 HEAD

如果正好这几个 COMMIT 是在中间部分,这个解决方式就不奏效了,不知道是什么原因造成的。

我用的另一个解决办法就是先在游离的 HEAD 上创建一个新分支(直接 checkout -b),然后把之前的分支改名,再把刚刚创建的新分支改为之前分支的名字。

皇甫雨华
2023-09-16

你现在的git处于分离头指针状态,指向dfd4这个commit。
需要先checkout到需要合并的commit上,然后再rebase -i,选择squash进行合并

 类似资料:
  • 开发分支合并到测试分支,只保留一个commit记录?最不容易出现问题的方法 尝试了 git merge --squash,想知道rebase怎么操作

  • Merge Request怎么指定合并哪些commit,比如3条commit我只想合并2条

  • 如上图,我想实现图上的效果,合并dev分支上历史连续提交的几个commit为一个到master主分支上,但是并不合并到最新 我知道直接合并分支到最新的提交为一个commit是以下代码 但是不想合并到最新应该如何操作呢? 可能还会有下面的需求 将上面不同的连续几个分别合并成几个commit到master上

  • 比如我最近的3个commit分别为:任务1、任务2、任务3. 现在我想将这3个commit合并为1个commit,并且将这个commit的信息改为“完成所有任务”。 我应该怎样操作?

  • 我可以通过以下方法将数据发送到Firebase FiRecovery文档: 1) 添加() 2) set() 我很清楚,如何将数据添加到Firestore中,其中没有任何混淆。但我的问题是,Firebase Firestore中的方法“set”有两个setOption,例如merge和mergefields。这两组选项之间的区别是什么,我认为这两个选项的作用是相同的。如何实现setOption“m

  • 问题内容: 我正在使用’Lucene.Net’库,并且有以下问题。 不是创建两个单独的QueryParser对象并使用它们来获得两个Hits对象,而是可以使用一个QueryParser对象在两个字段上进行搜索,这样我只有一个Hits对象,它可以为我提供每个文档的总体得分? 问题答案: 有3种方法可以做到这一点。 第一种方法是手动构造查询,这是QueryParser内部的工作。这是执行此操作最强大的