同期と複数リポジトリ

プルリクエストをローカルで試す

ブラウザーで差分を眺めれば、そのコードが読みやすいかどうかは分かります。 アプリがまだ起動するかどうかは分かりません。それを確かめるにはブランチを 実際に動かすしかなく、そこで多くの人が詰まります。フォークからのプルリクエスト は、クローンしたこともない、しかもたいていプッシュ権のないリポジトリにあるから です。

ローカルで試す機能は、ほとんどの人が覚える必要のない事実でこれを解決します。 フォージは、すべてのプルリクエストの先頭を対象リポジトリ側にふつうの 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 を配るのは対象 リポジトリなので、アクセス権はそのリモートに対するあなたの認証情報に従います — セキュリティ を参照してください。

後片付け

プレビュー用ブランチはふつうのブランチです。終わったらサイドバーから削除するか、 プレビュー直後に取り消しを押してください。コミットしていないプレビューのマージは 取り消しで捨てられますし、やはり取り込みたいと決めたなら解決してコミットしても かまいません — その時点でそれはプレビューであることをやめ、 マージ になります。

この翻訳を GitHub で改善