Git - 在不解决冲突的情况下变基为一次提交
Git - rebase to one commit without resolving conflicts
假设我一直在一个名为 my-branch
的分支上工作,偶尔合并来自 master
的提交以保持最新。在某些合并中,我必须解决冲突,这很耗时。
现在我完成了 my-branch
,我想将其变基为 master
之上的一次提交。在变基期间,我将不得不解决相同的冲突,这将是乏味的。
但我已经有了我需要文件所处的确切状态,我只想清理历史记录。所以变基最快的方法是:
- 倒回到母版
- 使文件与
my-branch
中的相同,但丢弃提交历史记录。此时我会有很多未提交的更改。
- 进行一次提交
这可能吗?
编辑: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"
假设我一直在一个名为 my-branch
的分支上工作,偶尔合并来自 master
的提交以保持最新。在某些合并中,我必须解决冲突,这很耗时。
现在我完成了 my-branch
,我想将其变基为 master
之上的一次提交。在变基期间,我将不得不解决相同的冲突,这将是乏味的。
但我已经有了我需要文件所处的确切状态,我只想清理历史记录。所以变基最快的方法是:
- 倒回到母版
- 使文件与
my-branch
中的相同,但丢弃提交历史记录。此时我会有很多未提交的更改。 - 进行一次提交
这可能吗?
编辑: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"