[解決済み] git clone --mirror と git clone --bare の違いは何ですか?
質問
git cloneのヘルプページには、次のように書かれています。
--mirror
:
リモートリポジトリのミラーをセットアップします。これは次のことを意味します。
--bare
.
が、どのようなものなのか、詳しくは書かれていません。
--mirror
のクローンとは異なります。
--bare
クローンを作成します。
解決方法は?
この違いは
--mirror
,
すべて
refsがコピーされる
そのまま
. これは、リモート追跡ブランチ、ノート、refs/originals/* (filter-branch からのバックアップ) など、すべてを意味します。クローンしたレポには、それがすべて入っています。また、リモートアップデートが元からすべてを再取得するように設定されています(コピーされたrefを上書きします)。このアイデアは、リポジトリをミラーリングし、完全なコピーを持つことで、例えばセントラルレポを複数の場所でホストしたり、バックアップを取ったりすることができます。よりエレガントなgitの方法を除いて、ただ単純にレポをコピーすることを考えてみてください。
新しい ドキュメント は、ほとんどこのすべてを語っています。
--mirror
ソースリポジトリのミラーをセットアップします。 これは次のことを意味します。
--bare
. と比較すると--bare
,--mirror
は、ソースのローカルブランチをターゲットのローカルブランチにマップするだけでなく、すべての参照 (リモートブランチ、ノートなどを含む) をマップし、これらのすべての参照がgit remote update
をターゲットリポジトリに追加します。
私の元の回答では、ベアクローンと通常の (ベアではない) クローンとの違いについても言及しています。ベアではないクローンはリモート追跡ブランチを設定し、ローカルブランチは
HEAD
一方、ベアクローンはブランチを直接コピーします。
originにいくつかの分岐があるとします (
master (HEAD)
,
next
,
pu
および
maint
)、いくつかのタグ(
v1
,
v2
,
v3
) 、いくつかのリモートブランチ (
devA/master
,
devB/master
)、その他のいくつかの参考文献(
refs/foo/bar
,
refs/foo/baz
これは、ノート、隠し場所、他の開発者の名前空間かもしれません)。
-
git clone origin-url
(ノン・ベア)です。 すべてのタグがコピーされ、ローカルブランチのmaster (HEAD)
リモートブランチの追跡origin/master
とリモートブランチorigin/next
,origin/pu
およびorigin/maint
. トラッキングブランチは、次のように設定されています。git fetch origin
のように、期待通りに取得されます。リモートブランチ(クローンしたリモートの)や他の参照は完全に無視されます。 -
git clone --bare origin-url
: コピーされたすべてのタグが取得されます、ローカルブランチmaster (HEAD)
,next
,pu
およびmaint
は、リモート追跡ブランチはありません。つまり、すべてのブランチはそのままコピーされ、完全に独立して設定され、再度取得することは想定されていません。(クローンされたリモートの)リモートブランチや他の参照は、完全に無視されます。 -
git clone --mirror origin-url
: これらの参考文献の最後の1つまでそのままコピーされます。すべてのタグ、ローカルブランチが取得されますmaster (HEAD)
,next
,pu
およびmaint
, リモートブランチdevA/master
とdevB/master
その他の参考文献refs/foo/bar
とrefs/foo/baz
. 全てはクローンされたリモートの時と全く同じです。リモート追跡は、もしあなたがgit remote update
は、ミラーを削除して再ローン化したかのように、すべての参照はオリジンから上書きされます。元々ドキュメントにあるように、これはミラーなのです。機能的に同一のコピーであり、オリジナルと交換可能であることが前提となっています。
関連
-
[解決済み】以下の追跡されていないワーキングツリーファイルは、マージによって上書きされますが、私は気にしません。
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] Git ですべてのリモートブランチをクローンする方法
-
[解決済み] Git リポジトリを特定のフォルダにクローンする方法は?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Git サブモジュール head 'reference is not a tree' エラー
-
[解決済み】gitが「変更をコミットするか、マージする前にstashしてください」と言うのを解決するには?
-
[解決済み】GitHub: クローンには成功したが、チェックアウトに失敗した
-
Gitのプッシュでエラーが発生! [リモート拒否] master -> master (pre-receive hook declined) error: failed to push s...
-
[解決済み] Gitのエラー「object file ... is empty」はどうすれば直せますか?
-
[解決済み] Git ですべてのリモートブランチをクローンする方法
-
[解決済み] 通常のGitリポジトリをベアリポジトリに変換する方法は?
-
[解決済み] gitのブランチをアーカイブするにはどうすればよいですか?
-
[解決済み] git clone --mirror を更新する方法は?
-
[解決済み] git リポジトリを完全にバックアップしますか?