基本的に、リポジトリの一部として格納されている 'wrapping'ディレクトリはありません。あなたの期待はあなたに誤解を招くものです。 Gitリポジトリはデフォルトでは.git
というディレクトリです。あなたのサンドボックス、またはチェックアウトされたものは、.git
フォルダと同じルートレベルに置かれます。クローンを作成すると、自動的にマスターブランチがチェックアウトされます。 .gitフォルダとcheckoutはgitワークスペースの実際のルートです。
通常、Gitは、クローンとgit submodule add
コマンドを使用すると、通常は名前を推測し、ワークスペース用のディレクトリを作成します。ディレクトリを作成し、git repo(その.git
フォルダ)を配置し、masterブランチファイルをチェックアウトします。しかし、git clone <repo> .
またはgit clone <repo> <target_dir>
と指定するとGitはあなたのレポとチェックアウトのルートを任意の場所に配置します。
ですから、このようなレポ作成した場合:あなたはgit clone repo.git
と、後でそれを複製した場合、それはそれはfoo
と呼ばれるファイルやディレクトリを持っているrepo
と呼ばれるサブディレクトリに置かれている慣例であるだけで
mkdir repo.git
cd repo.git
git init
touch foo
git add foo
git commit -m "Initial commit"
を.git
。ただし、repoはルートチェックアウトディレクトリであり、現在のディレクトリではありません(ディレクトリに.git
というディレクトリがあるため、確認できます)。クローンを実行したディレクトリは、.git
またはcheckoutディレクトリを格納するディレクトリではありません。あなたが望むのであれば、git clone <repo> .
を実行すると、foo
というファイルと.git
というディレクトリがあり、repoというディレクトリは表示されません。
あなたはいつもあなたがこのようにレポを作成したのでしょう、その後にすべてのソースを入れ子レポと呼ばれるディレクトリがあるようにしたい場合は:あなたはちょうどあなたが持っているでしょうgit clone <uri>/repo.git
を使ってクローンを作成する場合次に
mkdir repo.git
cd repo.git
git init
mkdir repo
cd repo
touch foo
git add foo
git commit -m "Initial commit"
ディレクトリ.git
を含むrepo
というディレクトリと、fooファイルを持つrepo
というディレクトリがあります。私の意見では、これは面倒な(私が知っている、私はそれをやった...一度)間接の層です。
サブモジュールは、特定のチェックアウト時に別のgit repoを含む単純なディレクトリとしてのメインレポのエントリです。最初にサブモジュールを初期化して更新するときは、基本的にはメインリポジトリによってサブモジュール用に予約されたディレクトリを作成し、そのディレクトリ全体にgit repoとcheckoutを取得します。 gitリポジトリは通常は.gitディレクトリであり、それに沿ったチェックアウトであることを理解する必要があるので、そのディレクトリにも別のラップディレクトリが存在しないのは明らかです。基本的には、git submodule add <repo> [<target_dir>]
コマンドを使用するときに、サブモジュールがラップするディレクトリを指定しました。