プルリクエストをローカルで試す
ブラウザーで差分を眺めれば、そのコードが読みやすいかどうかは分かります。 アプリがまだ起動するかどうかは分かりません。それを確かめるにはブランチを 実際に動かすしかなく、そこで多くの人が詰まります。フォークからのプルリクエスト は、クローンしたこともない、しかもたいていプッシュ権のないリポジトリにあるから です。
ローカルで試す機能は、ほとんどの人が覚える必要のない事実でこれを解決します。 フォージは、すべてのプルリクエストの先頭を対象リポジトリ側にふつうの git の ref として公開しています。フォークに到達できる必要はなく、API トークンも要らず、 2 つ目のリモートも追加されません。フェッチ 1 回で、コードは自分のディスクに 届きます。

| ホスト | PR の先頭がある場所 |
|---|---|
| GitHub、GitHub Enterprise、Gitea、Forgejo、Gogs | refs/pull/<n>/head |
| GitLab(クラウドおよびセルフホスト) | refs/merge-requests/<n>/head |
| Bitbucket Cloud、Bitbucket Server | refs/pull-requests/<n>/from |
| Azure DevOps | refs/pull/<n>/merge |
Gitcito は 1 回の ls-remote で 4 つすべてを調べるため、見慣れないフォージや
セルフホストのフォージでも、いずれかの慣習に従っていれば動きます。
開き方
- サイドバーのプルリクエスト一覧 — 各エントリの矢印ボタン。GitHub 専用の詳細 ビューと違って、これはどのホストでも使えます。
- コマンドパレット: プルリクエストをローカルで試す…。
- プルリクエストの詳細ビュー内、「ブラウザーで開く」ボタンの隣。
指定するもの
リモート — そのプルリクエストが向けられたリポジトリで、通常は origin
です。フォークではありません。
プルリクエスト — 番号、またはブラウザーから貼り付けた URL。7、#7、
https://github.com/owner/repo/pull/7 のいずれも使え、GitLab、Bitbucket、
Azure DevOps の URL の形も同様です。探す を押すと、何かをフェッチする前に、
解決した ref とそれが指すコミットを Gitcito が報告します。
リモートブランチ — 2 つ目のタブで、探すべき PR の ref がない場合に使います。 ref を公開していないホストや、単に試してみたいだけのブランチのためのものです。 リモート上にある名前のままブランチ名を入力してください。
取り込み方は 2 つ
どちらもコミットを作りません。これは意図的です — 引き返せないプレビューは プレビューではありません。
| 方法 | 何が起きるか | 取り消し方 |
|---|---|---|
| ローカルブランチとして | ref が専用のブランチ(既定では pr/7)にフェッチされ、チェックアウトされます。他のブランチはそのままです。 |
取り消すと元いたブランチに戻り、プレビュー用ブランチを削除します。 |
| まだコミットしていないマージとして | ref が --no-commit --no-ff で現在のブランチにマージされ、合わさったツリーがステージされた状態で残るので、そのままビルドしてテストできます。 |
取り消すとマージを中断します。 |
同じプルリクエストをもう一度試すと同じブランチが再利用され、新しい先頭へ 移されます — テスト中に作者が修正をプッシュしたときに便利です。そのブランチが すでに存在する場合、Gitcito はそのことを伝え、リセットしてよいか尋ねます。 そこにしかないコミットは失われるからです。
できないこと
- ホストが公開していない ref を作り出すことはできません。 セルフホストの 設定によっては PR の ref を無効にしていますし、そもそも持たないフォージも あります。その場合は「#n の ref がありません」とはっきり表示され、リモート ブランチのタブが抜け道になります。
- タグはフェッチしません。 プレビューのために他人のタグの名前空間を自分の リポジトリへ引きずり込むべきではありません。
- マージ方式は作業ツリーがクリーンである必要があります。 git はコミットして いない作業の上にマージすることを拒みます。先に スタッシュ して ください。
- プレビューはレビューではありません。 コードを自分のマシンに置くだけで、 承認もコメントもマージもしません。それは ホスティングとプルリクエスト の役目です。
- プライベートなフォークはプライベートのままです。 PR の ref を配るのは対象 リポジトリなので、アクセス権はそのリモートに対するあなたの認証情報に従います — セキュリティ を参照してください。
後片付け
プレビュー用ブランチはふつうのブランチです。終わったらサイドバーから削除するか、 プレビュー直後に取り消しを押してください。コミットしていないプレビューのマージは 取り消しで捨てられますし、やはり取り込みたいと決めたなら解決してコミットしても かまいません — その時点でそれはプレビューであることをやめ、 マージ になります。