もちろん。のような分散バージョン管理システムの背後にある全体的な考え方gitは、「特別な」リポジトリはないということです。任意のリポジトリーは、ゼロ、1つ、または複数の他のリポジトリーのクローンまたは宛先にすることができます。
たとえば、リポジトリがあると仮定するとrepo1.git、次のことができます。
$ git clone --bare repo1.git repo2.git
$ git clone repo2.git repo3
$ cd repo3
$ ...make some changes and commit...
$ git push
$ cd ../repo2.git
$ git push
それに沿って進むと、私がrepo3-> repo2を押してから、repo2->repo1を押したことがわかります。
あなたのコメントへの返信:
git checkoutベアリポジトリで実行することはできません。それがfatal: This operation must be run in a work tree意味することです。リポジトリをgit clone作成すると、次の2つが得られます。
.gitディレクトリに含まれるリポジトリのコピー、および
- 「作業コピー」または「作業ツリー」。これは、リポジトリ内のファイルのチェックアウトされたコピーを含むディレクトリです。多くのコマンド(
checkout、pull)は、作業コピーを操作しているときにのみ意味があります。
ただし、ベアでないリポジトリ(つまり、作業ツリーが関連付けられているリポジトリ)にプッシュするのは難しいことに注意してください。gitは明示的な設定なしでエラーをスローします。次の線に沿って何かが表示されます。
To /home/lars/tmp/so/repo
! [remote rejected] foo -> foo (branch is currently checked out)
error: failed to push some refs to '/home/lars/tmp/so/repo'
これは、他の人がリポジトリにプッシュしている場合、作業ツリーの下のリポジトリ内で変更が発生するのは驚くべきことだからです。あなたはこの答えでもっと読むことができます。