[解決済み】Bareリポジトリと非Bareリポジトリの -実用的な- 違いは何ですか?
質問
Gitのベアリポジトリとノンベアリポジトリ、デフォルトリポジトリについて読んでいます。両者の違いや、なぜベアリポジトリに "push"しなければならないのかについて、(理論的には)よく理解できていないのです。以下がその内容です。
現在は、私一人が3台のパソコンでプロジェクトに取り組んでいますが、後で関わる人が増えるので、バージョン管理にはGitを使っています。すべてのコンピュータにベアリポジトリをクローンし、そのうちの一台で修正を終えたら、コミットしてベアリポジトリに変更をプッシュしています。私が読んだところでは、ベアリポジトリは "作業ツリー" を持たないので、ベアリポジトリをクローンしても、私は "作業ツリー" を持つことはありません。
作業ツリーにはプロジェクトのコミット情報、ブランチなどが保存されているのでは?それはベアリポジトリには表示されないでしょう。ですから、作業ツリーでコミットをレポに "push" するのが良いように思います。
では。 なぜベアリポジトリを使用する必要があり、なぜ使用しないのか?実用上の違いは何でしょうか? それは、より多くの人がプロジェクトに携わる上でメリットがない、ということでしょう。
このような作業には、どのような方法があるのでしょうか?ご提案ください。
解決方法は?
ベアリポジトリとそうでないもののもう一つの違いは、ベアリポジトリにはデフォルトのリモート オリジン レポジトリになります。
~/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 pull
と
git push
の操作は動作しません。Git は、ワークスペースがなければベアリポジトリに変更をコミットするつもりがないものと見なします。
~/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$
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] Git リポジトリで削除されたファイルを検索して復元する方法
-
[解決済み] git export」(「svn export」のようなもの)を行うか?
-
[解決済み] サブモジュールを含む "git clone "の方法は?
-
[解決済み] Gitで落としたスタッシュを復元する方法とは?
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み] Gitのプッシュを正しく強制する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】fatal: 有効なオブジェクト名ではない: 'master'
-
[解決済み】ERROR: Error cloning remote repo 'origin'.
-
[解決済み】git push >> fatal: 設定されたプッシュ先がありません。
-
git push reports an error ! [リモート拒否] master -> master (受信前のフックが拒否されました)
-
gitコミット発生 ! [リモート拒否] master -> master (pre-receive hook declined) 解決策
-
[解決済み] .gitignore と "以下の追跡されていない作業ツリーファイルはチェックアウトによって上書きされるでしょう"
-
[解決済み] エラーです。リベースを使用してプルできません。あなたはステージングされていない変更を持っています
-
[解決済み】Git Push エラー: チェックアウトされたブランチの更新ができない
-
[解決済み] 裸のGitリポジトリにプッシュするには?
-
[解決済み】Gitで複数の作業ディレクトリを作成できますか?