Synchronizacja i wiele repozytoriów

Podgląd pull requesta

Przeczytanie diffa w przeglądarce mówi ci, czy kod dobrze się czyta. Nie mówi ci, czy aplikacja nadal się uruchamia. Żeby się tego dowiedzieć, musisz uruchomić tę gałąź — i tutaj ludzie utykają, bo pull request z forka mieszka w repozytorium, którego nigdy nie klonowałeś i do którego często nie możesz pushować.

Podgląd lokalny rozwiązuje to faktem, którego większość ludzi nigdy nie musi poznać: hostingi publikują czubek każdego pull requesta jako zwykłą referencję gita w repozytorium docelowym. Fork nie musi być osiągalny, nie potrzebujesz tokenu API i nie dodaje się drugiego zdalnego. Jeden fetch i kod jest na twoim dysku.

Podgląd lokalny: wybierz zdalne, pull requesta i sposób jego nałożenia

Hosting Gdzie mieszka czubek PR-a
GitHub, GitHub Enterprise, Gitea, Forgejo, Gogs refs/pull/<n>/head
GitLab (chmura i self-hosted) refs/merge-requests/<n>/head
Bitbucket Cloud, Bitbucket Server refs/pull-requests/<n>/from
Azure DevOps refs/pull/<n>/merge

Gitcito sonduje wszystkie cztery jednym ls-remote, więc nieznany albo samodzielnie utrzymywany hosting zadziała, o ile trzyma się jednej z tych konwencji.

Otwieranie

  • Lista pull requestów w panelu bocznym — przycisk ze strzałką przy dowolnym wpisie. Działa dla każdego hostingu, w przeciwieństwie do widoku szczegółowego, który jest tylko dla GitHuba.
  • Paleta poleceń: Podejrzyj pull requesta lokalnie.
  • Wewnątrz widoku szczegółowego pull requesta, obok przycisku „otwórz w przeglądarce".

Co mu podajesz

Zdalne — repozytorium, przeciwko któremu pull request został otwarty, zwykle origin. Nie fork.

Pull request — numer albo wklejony adres z przeglądarki. 7, #7 i https://github.com/owner/repo/pull/7 działają tak samo; podobnie kształty adresów GitLaba, Bitbucketa i Azure DevOps. Naciśnij Znajdź, a Gitcito poinformuje o referencji, którą rozwiązał, i commicie, na który ona wskazuje — zanim cokolwiek zostanie pobrane.

Zdalna gałąź — druga zakładka, na wypadek gdy nie ma referencji PR-a do znalezienia: hostingu, który ich nie publikuje, albo gałęzi, którą po prostu chcesz wypróbować. Podaj nazwę gałęzi taką, jaka jest na zdalnym repozytorium.

Dwa sposoby nałożenia

Żaden nie zapisuje commita. To celowe — podgląd, od którego nie da się odejść, nie jest podglądem.

Tryb Co się dzieje Jak to cofnąć
Lokalna gałąź Referencja jest pobierana na własną gałąź (domyślnie pr/7) i wypakowywana. Twoje pozostałe gałęzie zostają nietknięte. Cofnij wraca do gałęzi, na której byłeś, i kasuje gałąź podglądu.
Niezacommitowany merge Referencja jest mergowana do bieżącej gałęzi przez --no-commit --no-ff, zostawiając połączone drzewo w przechowalni, żebyś mógł je zbudować i przetestować. Cofnij przerywa merge.

Podglądnięcie tego samego pull requesta po raz drugi używa ponownie tej samej gałęzi, przesuwając ją na nowy czubek — przydatne, gdy autor wypycha poprawkę w trakcie twoich testów. Kiedy ta gałąź już istnieje, Gitcito mówi o tym i pyta przed jej zresetowaniem, bo każdy commit, który żyje tylko tam, przepadłby.

Czego nie zrobi

  • Nie wymyśli referencji, której hosting nie publikuje. Niektóre konfiguracje self-hosted wyłączają referencje PR-ów; niektóre hostingi nigdy ich nie miały. Dostajesz czytelne „brak referencji dla #n" i zakładkę zdalnej gałęzi jako drogę wyjścia.
  • Nie pobiera tagów. Podgląd nie powinien wciągać cudzej przestrzeni nazw tagów do twojego repozytorium.
  • Tryb merge'a wymaga czystego drzewa roboczego. Git odmawia mergowania na niezacommitowaną pracę; najpierw zrób stash.
  • Podgląd to nie recenzja. Kładzie kod na twojej maszynie — niczego nie zatwierdza, nie komentuje ani nie merguje. Od tego jest hosting i pull requesty.
  • Prywatne forki zostają prywatne. Referencję PR-a serwuje repozytorium docelowe, więc dostęp idzie za twoimi poświadczeniami do tamtego zdalnego — zobacz bezpieczeństwo.

Sprzątanie

Gałąź podglądu jest zwykłą gałęzią: skasuj ją z panelu bocznego, gdy skończysz, albo naciśnij cofnij zaraz po podglądzie. Niezacommitowany merge podglądu da się porzucić przez cofnij albo rozwiązać i zacommitować, jeśli jednak zdecydowałeś, że go chcesz — w tym momencie przestaje być podglądem, a staje się merge'em.

Popraw to tłumaczenie w serwisie GitHub