🐙

gh コマンドで選択したリポジトリ(gh-resolved)を変更する方法

2022/01/27に公開

概要

業務や個人開発で、リポジトリを作成したり PR を作成したりするときに、ghコマンドを使用しています。ghコマンドの解説は省きますが、非常に便利です。

本題に移ります。ghコマンドは fork したリポジトリでgh browsegh prを使用すると、リポジトリを選ぶように指示されます(以下を参照)。

リポジトリを選択する例
> gh browse
? Which should be the base repository (used for e.g. querying issues) for this directory?  [Use arrows to move, type to filter]
> FORK_ORIGIN/REPOSITORY_NAME
  MY_ORIGIN/REPOSITORY_NAME

一度設定した base repository を修正する方法が公式ドキュメントを調べても見当たりませんでした。調査したところ issues に解決方法が載っていたので、その方法についてまとめます。

https://github.com/cli/cli/issues/2300

変更方法

結論

以下のコマンドで gh-resolved の設定を初期化できます。
実行後、再度gh browseを実行するとリポジトリの選択が可能になります。

gh-resolvedをリセット
> git config --unset remote.origin.gh-resolved

また、直接変更したい場合は、以下で変更できます。

gh-resolvedを変更
git config remote.origin.gh-resolved OTHER_ORIGIN/REPOSITORY_NAME

解説

コマンドの意味について解説します。
ghコマンドは一度選択したリポジトリを.git/configファイルにキーremote.origin.gh-resolvedで登録します。
これはgit config --editでも確認できます。

remote.origin.gh-resolvedを表示
> git config --unset remote.origin.gh-resolved
MY_ORIGIN/REPOSITORY_NAME

そのため、gh-resolvedgit config --unsetで初期化するか、git config remote.origin.gh-resolved リポジトリ名で変更できます。

余談

ghコマンドではなくgitコマンドで設定を解除するしくみは issues でも議題に取り上げられており、今後(2022 年 1 月 22 日以降)ghコマンドにも機能に追加される可能性があります。詳しく以下の issues(上記の例と同等)を確認してみてください。

https://github.com/cli/cli/issues/2300

Discussion