Git
日本語 ▾ トピック ▾ 最新バージョン ▾ git-remote は 2.45.0 で最後に更新されました

名前

git-remote - トラッキング対象のリポジトリのセットを管理する

概要

git remote [-v | --verbose]
git remote add [-t <branch>] [-m <master>] [-f] [--[no-]tags] [--mirror=(fetch|push)] <name> <URL>
git remote rename [--[no-]progress] <old> <new>
git remote remove <name>
git remote set-head <name> (-a | --auto | -d | --delete | <branch>)
git remote set-branches [--add] <name> <branch>…​
git remote get-url [--push] [--all] <name>
git remote set-url [--push] <name> <newurl> [<oldurl>]
git remote set-url --add [--push] <name> <newurl>
git remote set-url --delete [--push] <name> <URL>
git remote [-v | --verbose] show [-n] <name>…​
git remote prune [-n | --dry-run] <name>…​
git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…​]

説明

ブランチを追跡するリポジトリ(「リモート」)のセットを管理します。

オプション

-v
--verbose

少し詳細な情報を表示し、名前の後にリモートURLを表示します。プロミザーリモートの場合は、どのフィルター(blob:noneなど)が設定されているかも表示します。注意:これはremoteとサブコマンドの間に置く必要があります。

コマンド

引数なしで、既存のリモートのリストを表示します。リモートに対して操作を実行するために、いくつかのサブコマンドが利用可能です。

add

<URL>にあるリポジトリに対して、<name>という名前のリモートを追加します。その後、コマンドgit fetch <name>を使用して、リモート追跡ブランチ<name>/<branch>を作成および更新できます。

-fオプションを使用すると、リモート情報の設定直後にgit fetch <name>が実行されます。

--tagsオプションを使用すると、git fetch <name>はリモートリポジトリからすべてのタグをインポートします。

--no-tagsオプションを使用すると、git fetch <name>はリモートリポジトリからタグをインポートしません。

デフォルトでは、フェッチされたブランチのタグのみがインポートされます(git-fetch[1]を参照)。

-t <branch>オプションを使用すると、リモートがrefs/remotes/<name>/名前空間の下のすべてのブランチを追跡するためのデフォルトのglob refspecの代わりに、<branch>のみを追跡するためのrefspecが作成されます。すべてのブランチを取得せずに複数のブランチを追跡するために、複数の-t <branch>を指定できます。

-m <master>オプションを使用すると、シンボリック参照refs/remotes/<name>/HEADはリモートの<master>ブランチを指すように設定されます。set-headコマンドも参照してください。

--mirror=fetchでフェッチミラーが作成されると、参照はrefs/remotes/名前空間に保存されず、リモート上のrefs/のすべてがローカルリポジトリのrefs/に直接ミラーリングされます。フェッチはローカルコミットを上書きするため、このオプションはベアリポジトリでのみ意味があります。

--mirror=pushでプッシュミラーが作成されると、git pushは常に--mirrorが渡されたかのように動作します。

rename

<old>という名前のリモートを<new>に名前変更します。リモートのすべてのリモート追跡ブランチと構成設定が更新されます。

<old><new>が同じで、<old>$GIT_DIR/remotesまたは$GIT_DIR/branchesの下のファイルである場合、リモートは構成ファイル形式に変換されます。

remove
rm

<name>という名前のリモートを削除します。リモートのすべてのリモート追跡ブランチと構成設定が削除されます。

set-head

名前付きリモートのデフォルトブランチ(つまり、シンボリック参照refs/remotes/<name>/HEADのターゲット)を設定または削除します。リモートのデフォルトブランチは必須ではありませんが、特定のブランチの代わりにリモートの名前を指定できます。たとえば、originのデフォルトブランチがmasterに設定されている場合、通常origin/masterを指定する場所であればどこでもoriginを指定できます。

-dまたは--deleteを使用すると、シンボリック参照refs/remotes/<name>/HEADが削除されます。

-aまたは--autoを使用すると、リモートにクエリを実行してHEADを特定し、シンボリック参照refs/remotes/<name>/HEADが同じブランチに設定されます。たとえば、リモートのHEADnextを指している場合、git remote set-head origin -aはシンボリック参照refs/remotes/origin/HEADrefs/remotes/origin/nextに設定します。これはrefs/remotes/origin/nextがすでに存在する場合にのみ機能します。そうでない場合は、最初にフェッチする必要があります。

シンボリック参照refs/remotes/<name>/HEADを明示的に設定するには、<branch>を使用します。たとえば、git remote set-head origin masterはシンボリック参照refs/remotes/origin/HEADrefs/remotes/origin/masterに設定します。これはrefs/remotes/origin/masterがすでに存在する場合にのみ機能します。そうでない場合は、最初にフェッチする必要があります。

set-branches

名前付きリモートで追跡されるブランチのリストを変更します。これは、リモートの初期設定後、利用可能なリモートブランチのサブセットを追跡するために使用できます。

名前付きブランチは、git remote addコマンドラインで-tオプションを指定した場合と同じように解釈されます。

--addを使用すると、現在追跡されているブランチのリストを置き換えるのではなく、そのリストに追加されます。

get-url

リモートのURLを取得します。insteadOfおよびpushInsteadOfの設定がここで展開されます。デフォルトでは、最初のURLのみが表示されます。

--pushを使用すると、フェッチURLではなくプッシュURLがクエリされます。

--allを使用すると、リモートのすべてのURLが表示されます。

set-url

リモートのURLを変更します。正規表現<oldurl><oldurl>が指定されていない場合は最初のURL)に一致するリモート<name>の最初のURLを<newurl>に設定します。<oldurl>がどのURLにも一致しない場合は、エラーが発生し、何も変更されません。

--pushを使用すると、フェッチURLではなくプッシュURLが操作されます。

--addを使用すると、既存のURLを変更するのではなく、新しいURLが追加されます。

--deleteを使用すると、既存のURLを変更するのではなく、正規表現<URL>に一致するすべてのURLがリモート<name>に対して削除されます。プッシュ以外のすべてのURLを削除しようとするとエラーになります。

プッシュURLとフェッチURLは、異なるように設定できますが、同じ場所を参照する必要があることに注意してください。プッシュURLにプッシュした内容は、すぐにフェッチURLからフェッチした場合に見えるはずのものです。ある場所(たとえば、アップストリーム)からフェッチし、別の場所(たとえば、公開リポジトリ)にプッシュする場合は、2つの別々のリモートを使用します。

show

リモート<name>に関する情報を提供します。

-nオプションを使用すると、リモートヘッドは最初にgit ls-remote <name>でクエリされません。代わりにキャッシュされた情報が使用されます。

prune

<name>に関連付けられた古い参照を削除します。デフォルトでは、<name>の下の古いリモート追跡ブランチが削除されますが、グローバル構成とリモートの構成によっては、そこにプッシュされていないローカルタグも削除する可能性があります。git fetch --prune <name>と同等ですが、新しい参照はフェッチされません。

さまざまな構成に応じて何を削除するかについては、git-fetch[1]の「削除」セクションを参照してください。

--dry-runオプションを使用すると、どのブランチが削除されるかが報告されますが、実際には削除されません。

update

remotes.<group>で定義されているリポジトリ内のリモートまたはリモートグループの更新をフェッチします。コマンドラインでグループもリモートも指定されていない場合は、設定パラメータ remotes.default が使用されます。remotes.default が定義されていない場合は、設定パラメータ remote.<name>.skipDefaultUpdate が true に設定されていないすべてのリモートが更新されます。(git-config[1]を参照)。

--prune オプションを使用すると、更新されたすべてのリモートに対してプルーニングが実行されます。

議論

リモートの設定は、remote.origin.url および remote.origin.fetch 設定変数を使用して行われます。(git-config[1]を参照)。

終了ステータス

成功した場合、終了ステータスは 0 です。

addrenameremove などのサブコマンドが問題のリモートを見つけられない場合、終了ステータスは 2 です。リモートがすでに存在する場合、終了ステータスは 3 です。

その他のエラーの場合、終了ステータスはゼロ以外の任意の値になる可能性があります。

  • 新しいリモートを追加し、フェッチして、そこからブランチをチェックアウトします

    $ git remote
    origin
    $ git branch -r
      origin/HEAD -> origin/master
      origin/master
    $ git remote add staging git://git.kernel.org/.../gregkh/staging.git
    $ git remote
    origin
    staging
    $ git fetch staging
    ...
    From git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
     * [new branch]      master     -> staging/master
     * [new branch]      staging-linus -> staging/staging-linus
     * [new branch]      staging-next -> staging/staging-next
    $ git branch -r
      origin/HEAD -> origin/master
      origin/master
      staging/master
      staging/staging-linus
      staging/staging-next
    $ git switch -c staging staging/master
    ...
  • git clone を模倣するが、選択されたブランチのみを追跡する

    $ mkdir project.git
    $ cd project.git
    $ git init
    $ git remote add -f -t master -m master origin git://example.com/git.git/
    $ git merge origin

GIT

git[1] スイートの一部

scroll-to-top