テクニカル雑記帳です
GitHub CLIでデフォルトのリモートリポジトリを設定する
問題と推測される原因
Forkしたリポジトリでgh pr create
すると、本来以下のようにエラーとなる。
> gh pr create
X No default remote repository has been set for this directory.
今回詰まったのは、rebase先をいつの間にかoriginのrepo(fork元のリポジトリ)へと設定してしまっていたからっぽい。 この場合、gh pr createはfork元にプルリクエストを作成しようとする挙動をするらしい。
Gitでは、ブランチごとにリモートとrebase先を設定することができ、以下のコマンドで確認できた。
git config --list | grep branch
例:
branch.master.remote=origin
branch.master.merge=refs/heads/master
が、しかし。
branch.<branch_name>.remote
やbranch.<branch_name>.merge
がorigin
となっている場合でも、rebase先をFork元のmasterブランチに設定していると、gh pr create
はFork元のmasterに向けて動作してしまう。
たとえば、以下のようなことをしてしまっているとダメ。
git remote add origin git@github.com:ForkOwner/repository.git
この設定では、git rebase origin/master
がFork元のリポジトリを参照することになる。
リモート設定の確認・修正
以下のコマンドを使用して、デフォルトリポジトリを設定し直す。
gh repo set-default
実行すると、? Which repository should be the default? [Use arrows to move, type to filter]
と聞かれるので、自分がオーナーになっている方のリポジトリを選ぶよとい。
> gh repo set-default
This command sets the default remote repository to use when querying the
GitHub API for the locally cloned repository.
gh uses the default repository for things like:
- viewing and creating pull requests
- viewing and creating issues
- viewing and creating releases
- working with GitHub Actions
- adding repository and environment secrets
? Which repository should be the default? [Use arrows to move, type to filter]
> ForkOwner/branch-name
YourName/branch-name
自分のrepoの方を選ぶと
✓ Set YourName/{your-branch-name} as the default repository for the current directory
となり、設定が完了する。