回答:
更新:詳細!
私は最初からこれを行うべきでした:GitのGitリポジトリにGitリリースノートをgrepしました(とてもメタです!)
grep --color=always -R -C30 fetch Documentation/RelNotes/* | less
次に、をless
検索しました--all
。これは、Gitバージョン1.6.6のリリースノートで見つけたものです。
git fetch
多くのリポジトリからフェッチを実行するための学習--all
と--multiple
オプション、および--prune
古くなったリモート追跡ブランチを削除するためのオプション。これらのメイクgit remote update
とgit remote prune
あまり必要(削除する予定はありませんremote update
もremote prune
かかわらず、)。
バージョン1.6.6は2009年12月23日までリリースされておらず、元のポスターは2009年12月6日に質問しました。
したがって、リリースノートからわかるように、Gitの作成者は、git remote update
コマンド機能がによって幾分重複しているという事実を認識していましたが、git fetch
既存のスクリプトやプログラムとの下位互換性のため、またはおそらくそれを削除しないことにしました。作業量が多すぎて、優先度の高いアイテムがあります。
詳細を含む元の回答
xenoterracideの答えは現在3.5年前のものであり、Gitはそれ以来いくつかのバージョンを経ており(この執筆時点でv1.6.5.5 からv1.8.3.2になっています)、現在のドキュメントを見るgit remote update
とgit fetch
、正しいオプションと引数を指定すると、どちらも基本的に、複数のリモートから新しいコミットを取得する同じ機能を実行できます。
複数のリモートを取得する1つの方法は、--all
フラグを使用することです。
git fetch --all
設定していない場合は、設定済みのすべてのリモートからフェッチremote.<name>.skipFetchAll
します。
trueの場合、git-fetch(1)またはgit-remote(1)の updateサブコマンドを使用して更新するときに、このリモートはデフォルトでスキップされます。— git-configドキュメント
これは、
git remote update
フェッチするリモートグループを指定せず、またremotes.default
repo構成で設定していないこと、およびどのリモートもremote.<name>.skipDefaultUpdate
trueに設定していないこと。
Gitリポジトリの構成の現在の1.8.3.2ドキュメントは言及していないremotes.default
設定を、私はそれについて全能Googleに相談してから、この便利な説明を見つけMislavMarohnićを:
$ git config remotes.default 'origin mislav staging'
$ git remote update
# fetches remotes "origin", "mislav", and "staging"
remote update
コマンドによってフェッチされるリモートのデフォルトリストを定義できます。これらは、チームメイトからのリモート、オープンソースプロジェクトの信頼できるコミュニティメンバーなどです。
したがって、おそらくremotes.default
設定していて、その中にすべてのリモートがリストされてgit remote update
いない場合は、リポジトリが「認識」しているすべてのリモートをフェッチしないでしょう。
用としてremote.<name>.skipDefaultUpdate
設定、Gitのドキュメントは thuslyそれを説明します:
trueの場合、git-fetch(1)またはgit-remote(1)の updateサブコマンドを使用して更新するときに、このリモートはデフォルトでスキップされます。
すべてのリモートをフェッチする代わりに、両方fetch
をremote update
使用して、フェッチする複数のリモートおよびリモートのグループを指定できます。
git fetch [<options>] <group>
git fetch --multiple [<options>] [(<repository> | <group>)…]
git fetch [<options>] <group>
(Mislavから別の例を借りるために)グループの一部である複数のリモートをフェッチすることができます:
$ git config remotes.mygroup 'remote1 remote2 ...'
$ git fetch mygroup
git fetch --multiple
いくつかのリポジトリとリポジトリグループを指定して、一度にフェッチすることができます(docsから):
いくつかの許可
<repository>
と<group>
引数を指定します。<refspec>s
指定できません。
git remote update
ドキュメントのあいまいさ
の概要はgit remote update
、コマンド構文が次のとおりであることを指定します。
git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…]
最後の部分に注意してください[(<group> | <remote>)…]
?末尾のドット...
は、コマンドを使用して複数のグループとリモートを指定できることを意味します。つまりgit fetch --multiple
、2つのグループの構文が同じように動作することを意味します。
ただし、同じドキュメントでは、update
コマンドの説明では、複数のグループとリモートの引数を指定することについては何も述べられていません。
で定義されているように、リポジトリ内の名前付きリモートセットの更新をフェッチします。
remotes.<group>
いる。
だからかどうかは不明です git remote update
git fetch --multiple
複数の個別のリモートと複数のリモートグループを指定することに関してと同じ機能する。
最後に、誰もが単一のリモートをフェッチする単純なケースを知っています。
git fetch <remote>
あなたも使用できる場合があるかもしれません
git remote update <remote>
同じことをしますが、前のセクションで述べたようにgit remote update
、単一のグループ以外のものをフェッチできるかどうかについてのドキュメントは不明確です、コマンドを使用してリモートのです。
私が説明git fetch
したgit remote update
ように、複数のリモートからのフェッチに関して同様に動作します。ただし、それらは同様の構文と引数を共有します。git fetch
短いが。そのため、タイプして使用する方が簡単だと思います。
git remote update
withのように単一のリモートだけをフェッチするのに使用できない場合があるかもしれませんgit fetch
が、私が指摘したように、ドキュメントではこれが明確にされていません。
さておき
例示Gitの磁器コマンドとの間の機能的に重複、git fetch
およびgit remote update
上方には、一意ではありません。私は似たような状況に気づいたgit rebase --onto
し、git cherry-pick
新しいベースがコミットに両方のパッチをコミットの範囲を取ることができるには、。
Gitが長年にわたって進化してきたため、おそらくエンドユーザーの便宜のために、一部の機能が(必然的に?)複製されたと思います(たとえば、cherry-pick
単一のコミットを何度も渡すよりも、範囲をに渡す方が簡単です)範囲を選択します)。どうやらv1.7.2リリースノートでcherry-pick
説明されているように、コミットの範囲を常に受け入れるとは限りませんでした:
git cherry-pick
コミットの範囲を選択することを学びました(例:cherry-pick A..B
およびcherry-pick --stdin
)git revert
。rebase [-i]
ただし、これらはより優れたシーケンス制御をサポートしていません。
はいといいえ。git remote update
1つだけでなく、すべてのリモートからフェッチします。
remote update
単にシェルスクリプト(可能性がある)であるかどうかを確認するためにコードを調べることなく、基本的に、各リモートに対してフェッチを実行します。git fetch
より細かくすることができます。
git remote update
リモートを設定できます。git-remoteのマンページを参照してください。
git remote
はシェルスクリプトではありませんが、git fetch
中に生成されますremote update
。
git fetch
コマンドオプションはありgit remote update
ますか?
git fetch --all
git rebase
のようなものであるmv
とgit cherry-pick
のようなものですcp
。--onto
スイッチは、それを変更しません。git rebase
SHA1値を指定した場合にのみ、コピー効果を得ることができます。それ以外の場合、ブランチは移動されます。