Git - 在不解决冲突的情况下变基为一次提交

Git - rebase to one commit without resolving conflicts

假设我一直在一个名为 my-branch 的分支上工作,偶尔合并来自 master 的提交以保持最新。在某些合并中,我必须解决冲突,这很耗时。

现在我完成了 my-branch,我想将其变基为 master 之上的一次提交。在变基期间,我将不得不解决相同的冲突,这将是乏味的。

但我已经有了我需要文件所处的确切状态,我只想清理历史记录。所以变基最快的方法是:

  1. 倒回到母版
  2. 使文件与 my-branch 中的相同,但丢弃提交历史记录。此时我会有很多未提交的更改。
  3. 进行一次提交

这可能吗?

编辑:SO 告诉我解释为什么我的问题不是 this one 的重复问题。虽然那里投票最多的答案可以解决我的问题,但那里的问题是 "how to squash commits?" 而我的是 "I know how to squash commits, how to do it without dealing with conflicts?"。所以答案是一样的,但是我在发帖前找解决方案的时候没找到。也许如果其他人也知道变基但不知道软重置,他们会在这里找到解决方案。

当然....使用 git reset --soft.

相当简单
git checkout my-branch
git merge master -m "Merging last changes from master"
# we start the magic here
git reset --soft master # set the branch pointer on master
git commit -m "Here's the work for X feature in a single shot"