2

サブモジュールが設定されたプロジェクトがあります。同僚が誤ってターゲット フォルダーを削除し、代わりに (プロジェクト フォルダーの外部を指す) シンボリック リンクを作成してコミットしました。

リンクを削除して空のディレクトリを作成した後でも、サブモジュールを復元できなくなりました。.gitmodule と .git/config は変更されていません。git submodule add と git submodule init は何もしません。

他にも多くの変更が含まれているため、問題のあるコミットを元に戻すことはできません。

これはどのように修正できますか?

4

2 に答える 2

4

変更前にリポジトリに保存されていたディレクトリを復元する必要があります。

これらのサブモジュールのルート ディレクトリを再作成しても機能しません。

動作するのは次のとおりです。

git checkout master@{2 days ago} -- path/to/submodule/directory

(たとえば、サブモジュールが 2 日前に機能していたことがわかっている場合)

これにより、実際にはインデックス内の特別なエントリである空のディレクトリが復元されます。

次に、 agit submodule update --initはその内容を復元します。

于 2013-03-19T08:09:10.133 に答える
1

解決策は、サブモジュールのターゲット ディレクトリを削除し、サブモジュールを再度追加することでした。

git rm libs/routing
git submodule add ../librouting.git libs/routing
于 2013-03-19T16:16:58.500 に答える