github にプルリクエストのリストがあります。次のようにプルリクエストを取得できます。
git fetch origin +refs/pull/*:refs/remotes/origin/pr/*
次のような出力が得られます:
* [new ref] refs/pull/1/head -> origin/pr/1/head
* [new ref] refs/pull/1/merge -> origin/pr/1/merge
* [new ref] refs/pull/10/head -> origin/pr/10/head
* [new ref] refs/pull/10/merge -> origin/pr/10/merge
* [new ref] refs/pull/11/head -> origin/pr/11/head
* [new ref] refs/pull/11/merge -> origin/pr/11/merge
今、私はそれらの参照の 1 つをチェックアウトしたいと思います。私が試した何も機能していないようです:
$ git checkout refs/pull/1/head
error: pathspec 'refs/pull/1/head' did not match any file(s) known to git.
または:
git checkout origin/pr/1/head
error: pathspec 'origin/pr/1/head' did not match any file(s) known to git.
この参考資料をチェックアウトするにはどうすればいいですか?
ベストアンサー1
最初のコマンド ( )は、 がリモート リポジトリ内の参照の名前であるgit checkout refs/pull/1/head
ため機能しませんでした。refspecによって に変換されたため、ローカル リポジトリにその名前の参照はありません。refs/pull/1/head
fetch
refs/remotes/origin/pr/1/head
2 番目のコマンド ( git checkout origin/pr/1/head
) は機能するはずですが、「デタッチされた HEAD」警告が表示されるはずです。Stack Overflow に質問を投稿するときに、タイプミスを修正しましたか?
refspecは、fetch
git にリモート参照をrefs/remotes
ディレクトリ内のローカル参照に変換するように指示しました。そのディレクトリ内の参照は特別に扱われます。これらは「リモート参照」であり、最後に を実行したときのリモート リポジトリの状態を示しますfetch
。通常、これらの参照を直接チェックアウトすることは望ましくありません。リモート参照を「フォロー」または「追跡」するように構成されたローカル ブランチを作成する必要があります (これにより、リビジョン パラメータなどの特別な便利なショートカットが有効になり、 / の使用が@{u}
容易になります)。push
pull
試す:
git fetch origin +refs/pull/*:refs/remotes/origin/pr/*
git checkout -b whatever-branch-name-you-want origin/pr/1/head
上記は、と同じコミットを指す という新しいローカル ブランチwhatever-branch-name-you-want
( と呼ぶことをお勧めします) を作成し、を追跡するように構成してから、新しいブランチに切り替えます。pr/1/head
origin/pr/1/head
whatever-branch-name-you-want
origin/pr/1/head