[解決済み] git shallow clone (clone --depth) はリモートブランチを見逃す
質問
リモートリポジトリをクローンした後、-a オプションでリモートブランチが表示されません。何が問題なのでしょうか?どのようにデバッグすればよいのでしょうか。このスニペットでは、リモートブランチのうち2つが表示されていません。
$ git clone --depth 1 git://git.savannah.gnu.org/pythonwebkit.git
$ cd pythonwebkit
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
$ git --version
git version 1.8.3.1
別のマシンで同じコマンドを試したところ、うまくいきました。
$ git clone --depth 1 git://git.savannah.gnu.org/pythonwebkit.git
Receiving objects: 100% (186886/186886), 818.91 MiB | 3.44 MiB/s, done.
$ cd pythonwebkit/
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/debian
remotes/origin/master
remotes/origin/python_codegen
$ git --version
git version 1.7.1
別のレポのクローンも試しましたが、うまくいきました。しかし、私は再びこのマシン上でそれを試すことができますが、それは何が間違っているかを知る方がよいでしょう。
何か提案やヒントがあれば、大歓迎です。
編集:回答要約:git バージョン 1.8.3.2 以降、以前と同じ動作を得るためには "-depth"と "--no-single-branch"を一緒に使用する必要があるようです。これはバグ修正とみなされます。
どのように解決するのですか?
動作は正しく、最後のリビジョンの後、master-branch は(これがプライマリリモートの HEAD であるため)リポジトリ内の唯一のリモートブランチとなります。
florianb$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
完全なクローンは新しい(すべての)ブランチを提供します。
florianb$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/debian
remotes/origin/master
remotes/origin/python_codegen
シャロークローン
により
浅い説明
を技術文書に記載した場合、"
git-clone --depth 20 repo
[したがって、浅いクローンはブランチの先端から、要求されたコミットの深さを含む必要があります。
のドキュメントにあるように - 加えて -
git clone
に対して
--single-branch
-というオプションが記述されています。
"単一のブランチの先端につながる履歴のみをクローンします。
--branch
オプションか、プライマリブランチリモートのHEAD
を指しています。 でシャロークローンを作成する場合--depth
オプションで浅いクローンを作る場合、これはデフォルトです。--no-single-branch
が与えられれば、すべてのブランチの先端付近のヒストリを取得します。 "です。
そのため、浅い クローン ( で は 深さ -オプション) のみ フェッチ のみ 1つの単一ブランチ (要求された深さでの)1つのブランチのみです。
残念ながら、両方のオプション (
--depth
と
--single-branch
) は過去に欠陥があり、浅いクローンの使用は未解決の問題 (上に投稿したリンクで読むことができます) を暗示し、それは与えられた歴史の書き換えによって引き起こされます。これは、全体として、特殊なケースでやや複雑な動作につながります。
関連
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] Git ですべてのリモートブランチをクローンする方法
-
[解決済み] Git のリモートブランチを作成する方法を教えてください。
-
[解決済み] Git フェッチ リモートブランチ
-
[解決済み] すべてのGitブランチを取得する方法
-
[解決済み] Git で単一のブランチをクローンする方法を教えてください。
-
[解決済み] 古いリモート 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エラー - fatal: マージ中に部分コミットができない
-
[解決済み】なぜ「git commit」は私の変更を保存しないのですか?
-
Gitのプッシュでエラーが発生! [リモート拒否] master -> master (pre-receive hook declined) error: failed to push some refs to .......
-
[解決済み】gpgがデータの署名に失敗した fatal: failed to write commit object [Git 2.10.0].
-
[解決済み] fatal: EOF が早い fatal: インデックスパックが失敗した
-
[解決済み] git rebase: "error: cannot stat 'file': パーミッションが拒否されました"
-
[解決済み] エラーです。リベースを使用してプルできません。あなたはステージングされていない変更を持っています
-
[解決済み] Git フェッチ リモートブランチ
-
[解決済み] git export」(「svn export」のようなもの)を行うか?
-
[解決済み】Gitの浅いクローンを完全なクローンに変換する方法は?