1

~/main/sub のようなディレクトリ構造があります。メイン フォルダーには、1 つの git リポジトリがあります。サブディレクトリは無視されます (メインディレクトリにはさらにコンテンツがあります)。これら 2 つは 2 つの別々のオリジンにある必要があるため、サブディレクトリに新しい git リポジトリを追加しました。しかし、両方を同時にコミットしてプッシュする必要があります。そこで、メイン ディレクトリ リポジトリのcommit-msgフックに次のコードを追加しました。

echo "Commiting Content"

now=$(date +"%c")
cd sub
git add --all .
git commit -a -m "$now Update"

echo "Commiting Content complete!"

しかし、コミットを実行するたびに、このコードは実行されますが、クラッシュします。index.lock ファイルは、サブディレクトリの .git フォルダーに残ります。ファイルをコミットに追加することすらありません。サブフォルダーに移動してgit statusを使用すると、まだ追跡されていないファイルがあることがわかります!

次に、同じフック フォルダー内の別の bash スクリプトにコードを配置しました。ターミナルで実行したところ、うまくいきました!なぜそれが機能し、フックファイルが失敗するのですか?

4

1 に答える 1

0

フックは、git リポジトリのルート ディレクトリで実行されます。がルート ディレクトリの場合mainは、cd sub代わりにcd main/sub.

git サブモジュールを使用していますか? あなたの場合に当てはまるかもしれません。一度に両方のリポジトリをコミットすることはありませんsubが、 のサブモジュールである場合は、main最初に をコミットsubしてから、このコミットを変更として追加してコミットすることができますmain。このようにして、他の誰かがあなたがメインにコミットしmainた最新のリビジョンをチェックアウトできます。sub

于 2013-08-03T08:33:55.963 に答える