假设我一直在研究一个名为my-branch
的分支,偶尔合并来自master
的提交以保持最新状态。在某些合并中,我必须解决冲突,这非常耗时。
现在我已经完成了my-branch
,我想在master
之上将其重新设置为一次提交。在rebase期间,我将不得不解决相同的冲突,这将是乏味的。
但我已经拥有了我需要文件的确切状态,我只想清理历史记录。所以最快的变种方法是:
my-branch
中的文件相同,但丢弃提交历史记录。在这一点上,我有很多未经修改的变化。那可能吗?
编辑:SO告诉我解释为什么我的问题不是this one的副本。虽然最受欢迎的答案可以解决我的问题,但问题是“如何压缩提交?”而我的是“我知道如何压制承诺,如何在不处理冲突的情况下做到这一点?”。所以答案是一样的,但在发布此处之前我没有找到解决方案。也许如果其他人也知道rebase但不知道软重置,他们会在这里找到解决方案。
当然....使用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"