注: 1 回の呼び出しで別の refspec からフェッチする場合(config に登録されているフェッチ refspec を一時的にオーバーライドする)、Git 2.1 (2014 年 8 月) 以降で実行できます。
Junio C Hamano ( )によるコミット c5558f8を参照してください。gitster
f269048 ( fetch
: opportunistically update tracking refs, 2013-05-11)頃に開始されたリモート追跡ブランチの日和見更新の導入以来、 v1.8.4 時代にいくつかの更新が行われ、refspec を指定する場合でも構成が常に開始されます。remote.*.fetch
何を取得するかはコマンドラインで指定され、呼び出しごとに無効にしたり上書きしたりする方法はありません。
refmap として--refmap=<lhs>:<rhs>
構成されたの使用をオーバーライドするために使用できるコマンドライン オプションに注意を払うようにコマンドを教えます。remote.*.fetch
これにより、新しいオプションが提供されます。
--refmap=<refspec>
remote.*.fetch
コマンド ラインにリストされた参照を取得する場合、リモート リポジトリの構成変数の値ではなく、指定された refspec (複数回指定可能) を使用して、参照をリモート追跡ブランチにマップします。
詳細については、「構成済みのリモート追跡ブランチ」のセクションを参照してください。
(その Git の「Configured Remote-tracking Branches」セクションも Git 2.1 にさかのぼります。「理解に苦しむgit fetch
」を参照してください)
Git 2.25.1 (2020 年 2 月) では、"git fetch --refmap=" オプションのドキュメントが改善されました。
Derrick Stolee ( )によるコミット b40a502 (2020 年 1 月 21 日)を参照してください。( 2020 年 1 月 30 日、コミット 4b69f29でJunio C Hamanoによってマージされました)derrickstolee
gitster
fetch
: ドキュメントとテスト --refmap=""
署名者: Derrick Stolee
' ' 通話中の長時間のブロックを防ぐために、ユーザーはバックグラウンド ' ' プロセスgit fetch
のスケジュールを設定することができます。
ただし、これらの実行は、Git がリモートを追加するときに設定で設定されたデフォルトの refspec により、refs/remotes ブランチを更新します。
したがって、ユーザーは、フォアグラウンド フェッチ中にリモート ref が更新されても気付かないでしょう。実際、最後のフォアグラウンド fetch 呼び出しからの参照を操作できるように、それらの参照をそのままにしておきたい場合があります。git fetch
--refmap=
これは、カスタム refspec とともに' ' を使用して構成済みの refspec をオーバーライドすることで実現できます。
git fetch --refmap='' <remote> +refs/heads/*:refs/hidden/<remote>/*
カスタム ref スペースを設定し、新しい到達可能なオブジェクトのパックをダウンロードします。
この種の呼び出しでは、いくつかのことが起こります。
- 参照が更新された場合、新しいパックをダウンロードします。2. refs/hidden ブランチが存在するため、GC は新しくダウンロードされたデータを削除しません。
- 有効に
fetch.writeCommitGraph
すると、refs/hidden refs を使用して commit-graph ファイルが更新されます。
refs/hidden ディレクトリが際限なくいっぱいになるのを避けるために、この--prune
オプションを含めることができます。このような refspec を提供する場合、--prune
オプションはリモート ref を削除せず、代わりにターゲット refspace 内の ref のみを削除します。
ドキュメントを更新して ' --refmap=""
' の動作を明確にし、テストを作成して、この動作が今後も維持されることを保証してください。
そのため、git fetch
オプションの man ページには次のものが含まれるようになりました。
--refmap=<refspec>:
remote.*.fetch
コマンド ラインにリストされた参照を取得する場合、リモート リポジトリの構成変数 の値ではなく、指定された refspec (複数回指定可能) を使用して、参照をリモート追跡ブランチにマップします。
オプションに空<refspec>
を--refmap
指定すると、Git は構成された refspec を無視し、コマンドライン引数として指定された refspec に完全に依存します。詳細については、「構成済みのリモート追跡ブランチ
」の
セクションを参照してください。
過去 7 年間に行ったリモート追跡ブランチへのより積極的な更新は、Git 2.27 (Q2 2020) で修正されたドキュメントに反映されていないことに注意してください。
コミット a440884、コミット f6a65de (2020 年 4 月 5 日) by Philippe Blain ( phil-blain
)を参照してください。
( 2020 年 4 月 22 日、コミット fdee8b1でJunio C Hamanoによってマージされました)gitster
署名者: Philippe Blain
f269048754 (" : opportunisticallyfetch
update tracking refs", 2013-05-11, Git v1.8.4-rc0 --バッチ #0にリストされているマージ) 以降、 git pullの基盤は、構成されたリモート追跡ブランチを更新します。git fetch
[
](https://git-scm.com/docs/git-pull) <remote> <branch>
ただし、ドキュメントの「例」セクションの例ではgit pull
、そうではないことが示されています。
この例の説明を訂正してください。
代わりに、 for git pull origin next
:
これにより、next
一時的に のコピーが FETCH_HEAD に残りますが、リモート追跡ブランチは更新されません。
リモート追跡ブランチを使用すると、fetch と merge を呼び出すことで同じことができます。
あなたは今持っています:
これにより、next
一時的に のコピーが FETCH_HEAD に残り、リモート追跡ブランチが更新origin/next
されます。
fetch と merge を呼び出すことで、同じことができます。