1

私はオンラインでgitリポジトリを持っており、多くの人がそうであるように、プログラムを追跡するために使用しています。それは私のディレクトリのツリーのルートからの通常の手順ですべてうまくいきました:

git add . 
git commit
git push origin master

ある日、ツリー内のサブディレクトリが(gitサイトで)緑色になり、アクセスできなくなったのを見つけました。これで、緑色がサブモジュール用であることがわかりました(これが何を意味するのか理解していなくても)が、実際のディレクトリにして、そこにあるものを表示およびダウンロードしたり、変更を調べたりできるようにしたいと思います。問題は、ツリー内の他のディレクトリに触れることなく、すべてのサブディレクトリとファイルを内部に置いて、このディレクトリを再び正常にするにはどうすればよいかということです。

ありがとう

4

1 に答える 1

2

アイデアは次のようになります。

最後のリンクは、サブモジュールを逆参照する方法を示していますが、必要に応じて、そのサブモジュールで実行されたコミットの履歴を保持します(ただし、それらをメインリポジトリにマージします)。

サブモジュールを初期化しようとすると、次のメッセージが表示されます。

No submodule mapping found in .gitmodules for path '...'

「 Git-追跡されていないコンテンツを追跡する方法」の2番目の部分を確認してください:「プレーンコンテンツに置き換える」セクション。

根本的な原因は、メインのgitリポジトリワークツリー内にそれ自体がgitリポジトリであるディレクトリを追加しようとした場合です。

ディレクトリ' nested repo'は、独立したGitリポジトリとして始まります。
通常、このようなサブリポジトリは無視されますが、git addに明示的に追加するように指示すると、ディレクトリのコンテンツを追加する代わりに、サブリポジトリのHEADコミットを指すgitlinkエントリが作成されます
gitaddがそのような「セミサブモジュール」の作成を拒否するのであればいいかもしれません。

于 2012-09-09T07:41:45.303 に答える