使用 rebase 压缩期间丢失的更改
Lost changes during squash with rebase
我尝试运行
git rebase -i HEAD~N
将我的旧提交压缩为一个。但有时我会遇到合并冲突。问题是,即使我解决了冲突并执行“git rebase --continue”,我也丢失了很多其他提交更改。
我也尝试根据这些答案解决问题:Git squash all commits in branch without conflicting
如果您需要对包括合并提交在内的一系列提交进行变基,请添加 -m
选项:
git rebase -i -m HEAD~N
sequencer 脚本将允许您描述如何在重写中包含该合并。
您可以通过使用 reset --soft 来避免使用 rebase 进行压缩。假设你想要从 HEAD~100 压缩到你当前的分支(HEAD~100 是最后一个不会被压缩的幸存提交):
git reset --soft HEAD~100
git commit -m "Squashed stuff"
就是这样。没有冲突,没有麻烦。
软重置有效,但我找到了更好的解决方案。问题是我想压缩的提交中已经有一个合并提交。我使用以下代码获取父提交:
git show --pretty=%P COMMIT_HASH
最后,我不得不使用父提交的哈希来进行变基。
我尝试运行
git rebase -i HEAD~N
将我的旧提交压缩为一个。但有时我会遇到合并冲突。问题是,即使我解决了冲突并执行“git rebase --continue”,我也丢失了很多其他提交更改。
我也尝试根据这些答案解决问题:Git squash all commits in branch without conflicting
如果您需要对包括合并提交在内的一系列提交进行变基,请添加 -m
选项:
git rebase -i -m HEAD~N
sequencer 脚本将允许您描述如何在重写中包含该合并。
您可以通过使用 reset --soft 来避免使用 rebase 进行压缩。假设你想要从 HEAD~100 压缩到你当前的分支(HEAD~100 是最后一个不会被压缩的幸存提交):
git reset --soft HEAD~100
git commit -m "Squashed stuff"
就是这样。没有冲突,没有麻烦。
软重置有效,但我找到了更好的解决方案。问题是我想压缩的提交中已经有一个合并提交。我使用以下代码获取父提交:
git show --pretty=%P COMMIT_HASH
最后,我不得不使用父提交的哈希来进行变基。