Czy lepiej jest rozpocząć żądanie ściągnięcia lub wykonać lokalne zatwierdzenie scalania na master?

12

Używam GitHub od dłuższego czasu i zwykle przesuwałem swoje gałęzie funkcji, a następnie uruchamiałem żądanie ściągnięcia, które sam scaliłem. Odkryłem, że pomogło mi to śledzić, gdzie scaliłem oddziały.

Ale ostatnio czytam coraz więcej o tym, jak działa Git i zdałem sobie sprawę, że mogę używać poleceń scalania, aby odwoływać się podczas łączenia oddziałów.

Co więc powinienem zrobić, łącząc gałąź funkcji w master:
Wykonaj scalanie-zatwierdzenie na master, a następnie wypchnij ją w górę LUB Pchnij gałąź lokalną i rozpocznij żądanie ściągnięcia?

Przeczytałem Wprowadzenie do wniosków o ściągnięcie dla 2-osobowego zespołu - scalić własne żądania? oraz Jaki jest przepływ pracy z 2 osobami przy projekcie i Czy powinienem otwierać wnioski oddziału z oficjalnego repozytorium lub mojego widelca? ale żaden z nich nie odpowiada na to, czego szukam.

Ashhar Hasan
źródło
2
Czego dokładnie brakuje ci w tych odpowiedziach?
RubberDuck,
Pierwszy mówi o tym na podstawie tego, że żądania ściągania powinny być recenzowane. Drugi oferuje przepływ pracy. Trzeci nie jest nawet związany.
Ashhar Hasan,
1
Patrzę na to z najlepszych praktyk lub jak zachować dobry punkt widzenia historii git .
Ashhar Hasan,
1
Kiedy scalam PR, robię to poprzez lokalne połączenie oddziału. To pozwala mi upewnić się, że scalenie jest stosowane w sposób czysty, i ponownie uruchomić testy przed opublikowaniem wyniku. Żądania ściągania GitHub są tylko formalizacją tego przepływu pracy, samo Git nie ma koncepcji PR.
amon
2
Kiedy PR zostaje scalony, powoduje zatwierdzenie scalenia w master, więc nie sądzę, żeby miało to jakikolwiek wpływ na historię git. Dlatego nie sądzę, aby istniał jakiś powód, aby używać jednego lub drugiego oprócz osobistych preferencji między wierszem poleceń a interfejsem użytkownika Github.
Ixrec,

Odpowiedzi:

15

Mechanizm git seryjnej:
Używanie git merge featurepodczas mistrz scala gałąź featuredo masteri tworzy merge-commit(jeśli latorośl nie może być szybko przekazywane) w historii git. Aby wymusić stworzenie merge-commit, użyj --no-ffopcji za pomocą merge.

Mechanizm scalania żądania ściągnięcia:
kiedy uruchamiamy żądanie ściągania w GitHub, tworzy miejsce, w GitHub Issuektórym ludzie mogą rozmawiać i omawiać zatwierdzenia w PR przed ich scaleniem. Kiedy PR jest scalany w GitHub, robi dokładnie to samo, co git merge feature.

Co powinienem zrobić?
Jeśli chodzi o historię, nie ma między nimi żadnej różnicy.
Jeśli chodzi o wkład, twoi współautorzy nie będą musieli niczego innego w tych dwóch sytuacjach. Są takie same (bez miłej małej czatu).

Najlepsze praktyki:
I nie byłem w stanie znaleźć najlepszych praktyk, ale logika mówi, że PR nie są zbyt pomocne, jeśli w repozytorium jest tylko jedna osoba.

@lxrec i @amon pomogły mi dojść do tego wniosku.

Ashhar Hasan
źródło
5
Wskazówka: git mergemoże nie zarejestrować zatwierdzenia scalania, jeśli może wykonać „przewijanie do przodu”. Aby wymusić zatwierdzenie scalania, możesz dodać --no-ffopcję.
amon
Wolę robić git-merge na poziomie lokalnym zamiast robić to na githuib.com, gdybym miał coś takiego na github.com Wolałbym nie robić bezpośrednio na gałęzi master, wolałbym wybrać gałąź inną niż master, która może najpierw ustaw tryb przejściowy przed udostępnieniem go do produkcji.
Ciasto piekarz
5

Jak powiedział Ashhar , pod względem technicznym i historycznym nie ma różnicy. W przypadku projektów z małym zespołem wolę bezpośrednie połączenie zamiast dodatkowego etapu tworzenia PR. Jednak, gdy funkcja wymaga przeglądu / opinii lub gdy jest to PWT i nad nią będzie pracować więcej niż jedna osoba, mam tendencję do otwierania PR i dodawania listy zadań do opisu PR.

Pamiętaj, że git mergemożesz użyć szybkiego przewijania do przodu, jeśli nie ma zmian w master, więc możesz chcieć użyć git merge --no-ff. Zwykle nie.

Podsumowując, używaj PR tylko wtedy, gdy potrzebujesz dyskusji. W przeciwnym razie po prostu połącz bezpośrednio.

Louay Alakkad
źródło
1
Warto również wspomnieć, że dyskusja i opinie na temat żądania ściągnięcia mogą pochodzić ze źródeł automatycznych, a także członków zespołu. Jeśli masz skonfigurowany serwer CI, może on dawać wyniki kompilacji i testowania, aby nigdy nie łączyć czegoś, co psuje kompilację na wzorcu.
Eric,