日本語 ▾ トピック ▾ 最新バージョン ▾ 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>)…​]

説明

追跡しているリポジトリ ("remotes") のセットを管理します。

オプション

-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>/` 名前空間下のすべてのブランチを追跡するためのデフォルトのグロブ refspec の代わりに、`<branch>` のみを追跡する refspec が作成されます。すべてのブランチを取得せずに複数のブランチを追跡するために、複数の `-t <branch>` を指定できます。

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

`--mirror=fetch` でフェッチミラーが作成されると、ref は *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` が同じブランチに設定されます。例えば、リモートの `HEAD` が `next` を指している場合、`git remote set-head origin -a` はシンボリックリファレンス `refs/remotes/origin/HEAD` を `refs/remotes/origin/next` に設定します。これは `refs/remotes/origin/next` が既に存在する場合にのみ機能します。存在しない場合は、まずフェッチする必要があります。

明示的にシンボリックリファレンス `refs/remotes/<name>/HEAD` を設定するには `<branch>` を使用します。例えば、`git remote set-head origin master` はシンボリックリファレンス `refs/remotes/origin/HEAD` を `refs/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を変更します。リモート <name> のURLのうち、正規表現 <oldurl> に一致する最初のURL ( <oldurl> が指定されない場合は最初の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] の PRUNING セクションを参照してください。

`--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