1

这似乎是一个常见问题,但我找不到合理的解决方案:
恕我直言,git 子模块更糟糕的问题是子模块提交但未推送的更改很容易被包含的存储库使用删除git submodule update。报价:

如果您在子模块中进行并提交更改而没有先检查分支,则运行 git submodule update 是不安全的。它们将被静默覆盖:

(...后面是一个例子)。

因此,对于这个问题 -
让我们super成为存储库根文件夹并submod成为包含子模块的子文件夹:

-super   
     -submod

当我在子模块中提交但不推送,然后运行时,我在子模块中git submodule update提交更改被删除(哦,恐怖)。
执行此操作时如何添加确认are you sure问题?钩子、脚本或任何其他适用的想法更受欢迎。

TIA

4

1 回答 1

1

pre-submodule-update 没有挂钩,因此您可能需要做的是编写一个您使用的脚本而不是git submodule update.

查看是否有任何修改的子模块的简单方法是:

if git submodule status | grep -q '^+'; then
    # at least one submodule has changes
fi

另请注意,如果意外更新破坏了您的更改,您仍然可以通过子模块签出的 reflog 来挽救它们(因为子模块签出本身就是完整的 Git 存储库)。

于 2012-04-28T16:55:46.870 回答