2012-04-28 12 views
1

これはよくある問題ですが、妥当な解決策を見つけることができません:git submodules IMHO、サブモジュールがコミットされたが、リポジトリの使用状況がgit submodule updateの場合、簡単に削除できます。引用:あなたが作った最初のブランチをチェックアウトせずにサブモジュール内 変更をコミットしてしまった場合サブモジュールのコミットされた変更を削除しないようにサブモジュールの更新を防止します

をそれはgitのサブモジュールのアップデートを実行しても安全ではありません。それらは が自動的に上書きされます:

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

ので、question-に
superがリポジトリルートフォルダこととsubmodは、サブモジュールを含む子フォルダとしよう:私はサブモジュールにコミットが、押さない場合は

-super 
    -submod 

、その後、git submodule updateを実行します私は自分のを寄付しましたサブドメインの変更(オハイオ、ホラー)を削除しました。
私はこれを行うときに確認are you sure質問をどのように追加できますか? フック、スクリプト、または他の適切なアイデアを歓迎します。

TIA前のサブモジュール更新のためのフックが、ありません

答えて

1

ので、あなたはおそらく代わりにあなたが代わりgit submodule updateの使用スクリプトを記述されて行う必要があると思いますどのような。あなたが任意の変更のサブモジュールを持っているかどうかを確認するために

簡単な方法はこれです:

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

また偶然の更新は、変更内容を吹き飛ばす場合、あなたはまだサブモジュールのチェックアウトのREFLOGを経由して、それらを救うことができるかもしれないことに注意してください(サブモジュールチェックアウトは事実上完全にGitリポジトリになっているので)。

関連する問題