我喜欢这个如何将所有git提交压缩成一个提交的答案。
但是,如果我执行以下操作,就会导致合并冲突:
git rebase --root -i
按照建议使用pick和squash命令。并且,当我执行操作时,我会失去我的子模块(我有5个)。
rm -rf .git
git init
git add .
什么是最有效的方法来清除所有历史记录,并保持我的子模块在它们当前的目录中,以及它们当前的sha。
我喜欢这个如何将所有git提交压缩成一个提交的答案。
但是,如果我执行以下操作,就会导致合并冲突:
git rebase --root -i
按照建议使用pick和squash命令。并且,当我执行操作时,我会失去我的子模块(我有5个)。
rm -rf .git
git init
git add .
git reset --soft SHAOFFIRSTCOMMIT
然后运行 git commit --amend
。第一条命令将当前分支重置为第一个提交,但保留当前索引;第二条命令在最后一次提交中提交当前索引。
git reset --mixed
会重置索引。(顺便说一下,--mixed
是默认选项。)--soft
是保留索引不变的选项。 - user743382git reset --mixed
之后,你需要担心重新更新索引以使其恢复到执行git reset
前的确切状态,这并不是一件简单的事情。 - user743382