【问题标题】:How do I squash all commits without losing submodules?如何在不丢失子模块的情况下压缩所有提交?
【发布时间】:2015-05-14 11:52:23
【问题描述】:

我喜欢How to squash all git commits into one?的答案。

但是,如果我满足以下条件,我会遇到合并冲突:

git rebase --root -i

按照建议使用挑选和壁球。

而且,当我丢失我的子模块(我有 5 个)时

rm -rf .git
git init
git add .

什么是压缩所有历史记录并将我的子模块保留在其当前目录中的当前 sha 的最有效方法。

【问题讨论】:

    标签: git git-submodules


    【解决方案1】:

    尝试git reset --soft SHAOFFIRSTCOMMIT,然后尝试git commit --amend

    第一个命令将当前分支重置为第一次提交,但保留当前索引,第二个命令在最后一次提交中提交当前索引。

    【讨论】:

    • 不,git reset --mixed 重置索引。 (顺便说一句,--mixed 是默认值。)--soft 是保持索引不变的选项。
    • 但是 iirc mixed 在这种情况下也能胜任,对吧?
    • 不,一般情况下不会。在git reset --mixed 之后,您必须担心将索引重新更新到执行git reset 之前的确切状态,这不一定是微不足道的。
    • 这太棒了。我想这也会保留人民的分支机构。
    猜你喜欢
    • 2021-04-28
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 2020-08-30
    • 2014-05-08
    • 2013-02-26
    相关资源
    最近更新 更多