1

これは一般的な問題のようですが、合理的な解決策を見つけることができません。
私見、gitサブモジュールのさらに悪い問題は、サブモジュールがコミットされているがプッシュされていない変更が、リポジトリの使用法を含むことで簡単に削除されることですgit submodule update。引用:

最初にブランチをチェックアウトせずにサブモジュール内で変更を加えてコミットした場合、gitサブモジュールの更新を実行することは安全ではありません。それらは黙って上書きされます:

(...そこに例が続きます)。

だから、質問に-リポジトリのルートフォルダになり、サブモジュールを含む子フォルダ
になります:supersubmod

-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 に答える