私はGitのベアおよび非ベア/デフォルトリポジトリについて読んでいます。私はそれらの違いについて、そしてなぜ私が裸のリポジトリに「プッシュ」する必要があるのかについて、(理論的には)十分に理解することができませんでした。取引は次のとおりです。
現在、3台の異なるコンピューターでプロジェクトに取り組んでいるのは私だけですが、後でさらに多くの人が関与するため、バージョン管理にGitを使用しています。すべてのコンピューターでベアリポジトリのクローンを作成し、そのうちの1つで変更を完了したら、変更をコミットしてベアリポジトリにプッシュします。私が読んだところによると、ベアリポジトリには「作業ツリー」がないため、ベアリポジトリのクローンを作成すると、「作業ツリー」はありません。
作業ツリーには、プロジェクトからのコミット情報やブランチなどが格納されていると思います。それは裸のリポジトリには表示されません。したがって、作業ツリーを使用してリポジトリへのコミットを「プッシュ」する方がよいようです。
それでは、なぜベアリポジトリを使用する必要があるのでしょうか。実際の違いは何ですか?それはプロジェクトに取り組むより多くの人々にとって有益ではないと私は思います。
この種の仕事のためのあなたの方法は何ですか?提案?
ベアリポジトリと非ベアリポジトリのもう1つの違いは、ベアリポジトリにはデフォルトのリモートオリジンリポジトリがないことです。
~/Projects$ git clone --bare test bare
Initialized empty Git repository in /home/derek/Projects/bare/
~/Projects$ cd bare
~/Projects/bare$ git branch -a
* master
~/Projects/bare$ cd ..
~/Projects$ git clone test non-bare
Initialized empty Git repository in /home/derek/Projects/non-bare/.git/
~/Projects$ cd non-bare
~/Projects/non-bare$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
のマニュアルページからgit clone --bare
:
また、リモートのブランチヘッドは、refs / remotes / origin /にマッピングせずに、対応するローカルブランチヘッドに直接コピーされます。このオプションを使用すると、リモート追跡ブランチも関連する構成変数も作成されません。
おそらく、ベアリポジトリを作成するとき、Gitはベアリポジトリが複数のリモートユーザーのオリジンリポジトリとして機能すると想定しているため、デフォルトのリモートオリジンは作成されません。これが意味するのは、Gitはワークスペースがないと、ベアリポジトリに変更をコミットするつもりはないと想定しているため、基本操作git pull
とgit push
操作が機能しないということです。
~/Projects/bare$ git push
fatal: No destination configured to push to.
~/Projects/bare$ git pull
fatal: /usr/lib/git-core/git-pull cannot be used without a working tree.
~/Projects/bare$
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加