Dlaczego „żądanie ściągnięcia” git nie jest nazywane „żądaniem push”?

451

Terminologia używana do scalania oddziału z oficjalnym repozytorium to „żądanie ściągnięcia”. Jest to mylące, ponieważ wydaje się, że proszę o przekazanie moich zmian do oficjalnego repozytorium.

Dlaczego nazywa się to żądaniem ściągania, a nie żądaniem push?

Alejandro Sanz Díaz
źródło
45
Wyobraź sobie duże, żywe drzewo. Drzewo jest zbyt mocne, abyś mógł wepchnąć gałąź do środka, zamiast tego musisz poprosić drzewo, aby wciągnęło gałąź do pnia, wzmacniając ją.
Luke
2
Jeśli używasz zdalnego repozytorium, takiego jak gitihub, to jedno z ostatnich poleceń, które opiekun wykona w celu wykonania żądania za pośrednictwem wiersza poleceń, to git push. Dla mnie to mówi wszystko ... (tak, mogą wydać polecenie git pull, a następnie git push, ale prośba o push została zakończona)
ebyrob 30.09.16
62
GitLab nazywa ich merge requests. O wiele jaśniejsze, IMHO. :)
U007D,
1
duplikat: stackoverflow.com/questions/14817051/…
Timothy Swan

Odpowiedzi:

377

Jeśli masz zmianę kodu w swoim repozytorium i chcesz przenieść go do repozytorium docelowego, to:

  • „Push” to wymuszanie zmian obecnych w docelowym repozytorium ( git push).
  • „Pull” to repozytorium docelowe, które przechwytuje twoje zmiany, aby być tam obecne ( git pullz drugiego repozytorium).

„Żądanie ściągnięcia” oznacza, że ​​żądasz repozytorium docelowego, aby pobrać zmiany.

„Żądanie wypychania” byłoby repozytorium docelowym z prośbą o wypchnięcie zmian.

Sven
źródło
21
był to dla mnie problem również z konwencją nazewnictwa: D & u właśnie ułatwiło zrozumienie. myśleć o tym w ten sam sposób, w jaki działa zakup / sprzedaż waluty w bankach.
nsuinteger
Myślę, że musisz ponownie zdefiniować definicję „ściągnij”, ponieważ wprowadzanie w błąd jest związane z „docelowym repozytorium”, „swoimi zmianami”. Może chcesz powiedzieć, że „Twoje repozytorium przejmuje zmiany z repozytorium docelowego”?
MrPisarik
9
Kluczową ideą jest to, że terminologia „push” / „pull” służy do identyfikacji strony, która ostatecznie decyduje o tym, czy nastąpi przekazanie, a nie strony, która tworzy przesyłane informacje.
Jess Riedel,
3
Zależy to od tego , kogo żądasz, jeśli to twój zespół, „żądanie wypychania” ma sens, jeśli to zdalne repozytorium jest absolutnie właściwe.
A77
2
Pracując z centralnym, prywatnym serwerem Git w firmie, zwykle możesz przekazać do niego nowy oddział, poprosić o sprawdzenie kodu i połączenie ze współpracownikami. Zatem „żądanie ściągnięcia” dla tego przepływu pracy nie jest technicznie poprawne, ale okazało się, że jest to termin wybrany przez wszystkich i projektantów GUI.
Sven
88

Gdy wysyłasz żądanie ściągnięcia, prosisz (z prośbą) oficjalnego właściciela repozytorium, aby wyciągnął pewne zmiany z własnego repozytorium. Stąd „żądanie ściągnięcia”.

JB Nizet
źródło
2
ale właściciel wyda scalenie po zatwierdzeniu
Jervie Vitriolo,
2
Git pull to połączenie pobierania i scalania, więc pull już implikuje scalenie.
Xiong Chiamiov,
37

tl; dr, ponieważ nie wolno mi pchać, po prostu ładnie poproszę właściciela repo, więc zdecydują się pociągnąć


Kto może przekazywać kod do repozytorium?

Gdyby ktokolwiek (być może zły, niewykształcony lub nieznany) mógł przyjść i powiedzieć tutaj, po prostu zepchnąłem to do twojej głównej gałęzi i zepsułem cały twój kod HAHAHA! ?

Na pewno nie chcesz, żeby to zrobił. Domyślnie siatka bezpieczeństwa jest ustawiona, więc nikt nie może naciskać na twoje repo. Państwo może ustawić innym jako współpracownik , następnie mogą popchnąć. Dajesz taki dostęp osobom, którym ufasz.

Jeśli więc nie jesteś współpracownikiem i nie będziesz próbował współpracować, pojawi się błąd wskazujący, że nie masz uprawnień.


Jak więc inni programiści mogą wypchnąć repozytorium, na które nie mają pozwolenia?
Nie możesz dać dostępu każdemu, ale chcesz dać innym punkt wyjścia / wejścia, aby mogli „poprosić właściciela repo o pobranie tego kodu do repo”. Mówiąc prosto, udostępniając repozytorium, mogą je rozwidlać ... wprowadzać zmiany we własnym widelcu. Pchnij zmiany do własnego widelca . Gdy znajdzie się we własnym zdalnym repozytorium:

Robią żądania ściągania ze swojego talerza i właściciel upstream repo (których nie można bezpośrednio do pchania) zdecyduje, czy nie połączyć żądania ciągnąć.


Również częściowo związane pytanie, które polecam przeczytać. Co dokładnie dzieje się podczas wypychania gitów? Dlaczego wypychanie git nie jest traktowane jak scalenie git?

miód
źródło
4
dla osób, które nie zdają sobie sprawy, że istnieje różnica między uprawnieniami push i pull, ta odpowiedź ma wiele sensu.
buddie
29

Wyciągnij prośbę: Proszę cię, byś wyciągnął moją.

hepidad
źródło
7
Jako użytkownik widzę to z mojego punktu widzenia, czy nie powinno to brzmieć: „Proszę o przekazanie go tobie?”. I >>> You - Zmieniasz punkt odniesienia dwa razy w tym samym kontekście ... zamiast I >>>> You <<<< Mine
Marin,
1
Ta odpowiedź jest najbardziej sensowna.
shivams
Łatwe, wkurzone wyciskanie cytryny
Ivan Ivković
Proszę cię o wyciągnięcie mojego ..... skąd ??? Rozumiem, że byłoby to z widelca oryginalnego projektu? lub z lokalnej kopii?
KansaiRobot
5

Chcę przekazać coś repozytorium innej osoby.

Nie mam uprawnień do pchania (lub ciągnięcia, jeśli o to chodzi).

Właściciel / współpracownicy ma uprawnienia. Mogą ciągnąć i pchać. Nie mogę naciskać.

Dlatego proszę ich, aby wykonali ode mnie pociągnięcie - co pośrednio oznacza, że ​​proszę ich o zaakceptowanie mojego pchnięcia.

Więc nie ma prośby o push. Tylko dla pociągnięcia. I do przyjęcia push.

Dlatego prośba o „pociągnięcie”. I nie prośba „push”.

użytkownik11705414
źródło
4

Kluczem do tych działań jest słowo „Prośba”. Możesz również pomyśleć o tym jako o treści: „Mam prośbę o wzięcie mojej pracy, zgadzasz się?” - „A Pull Request”.

Na początku jest to nieco mylące, ale w końcu ma sens.

Kyzer
źródło
1

Aby lepiej to zrozumieć i zapamiętać na zawsze, musisz to sobie wyobrazić.

Wyobraź sobie duże, żywe drzewo {jako twoje repozytorium}. Drzewo jest zbyt mocne, abyś mógł w niego wcisnąć gałąź lub dodać do niej nową część {symbolizuje utworzenie nowej gałęzi lub wpychasz do niej kod}, zamiast tego musisz poprosić drzewo o wciągnięcie gałęzi do pnia lub mieć zmiany od ciebie.

Termin „żądania ściągnięcia” pochodzi z natury rozproszonej. Zamiast po prostu wrzucać zmiany do repozytorium (tak jak w przypadku repozytorium scentralizowanego, np. Subversion), publikujesz zmiany oddzielnie i prosisz opiekuna o ich wprowadzenie. Opiekun może wtedy przejrzeć zmiany i wykonać polecenie ściągnięcia.

Więc w zasadzie „prosisz” facetów z dostępem do pisania do repozytorium, w którym chcesz uczestniczyć, aby „wyciągnąć” z repozytorium.

Żądania ściągania pozwalają innym informować o zmianach, które zostały przesłane do oddziału w repozytorium w serwisie GitHub. Po otwarciu żądania ściągnięcia możesz omówić i przejrzeć potencjalne zmiany ze współpracownikami oraz dodać zatwierdzenia, zanim zmiany zostaną scalone z gałęzią podstawową. Wyjaśnienie Github

SPidey
źródło
0

Uważam, że to głupia terminologia, ponieważ chcę myśleć, że chcę WASIĆ coś do ciebie, a nie odwrotnie, prosząc kogoś innego o wyciągnięcie moich dodatków. Dlatego należy go zmienić na PUSH REQ. ponieważ jestem aktywną częścią. Strzała idzie w drugą stronę, zaczynając ode mnie, a nie od Goofy na drugim końcu. MOIM ZDANIEM.

Michael Pauli
źródło
0

Myśl w ten sposób. Lokalne repozytorium a zdalne repozytorium.

  • Kiedy naciskasz z lokalnego. ( git push) - innymi słowy, zdalne repozytorium pobiera od ciebie kody (lokalne).

Prosisz o coś. Zapytaj więc siebie

  • Czy chcesz, aby zdalne repozytorium ściągało od ciebie kody? - Pull Request.
Jin Lim
źródło
Myślę, że ważne jest rozróżnienie, że nie można wysyłać żądań push. Jeśli możesz naciskać i to robisz, nie jest to prośba, połączy się z mistrzem. Żądanie ściągnięcia w kierunku repozytorium git hub polega na zażądaniu scalenia kodu.
James
Po prostu używam tego jako przykładu. Oczywiście Github może przesuwać kod. ale zredaguję swoją odpowiedź.
Jin Lim
0

Obawiam się, że większość z tych odpowiedzi odnosi się do pytania Co oznacza „żądanie ściągnięcia”? lub Co oznaczałoby „żądanie push”? zamiast pytania PO: Dlaczego nazywa się to żądaniem ściągania, a nie żądaniem push?

Zwykle ten rodzaj zastępowania pytań jest dopuszczalny, ale w tym przypadku jest oczywiste, że PO zna odpowiedzi na te pytania zastępcze, więc udzielenie odpowiedzi nie jest zbyt pomocne.

Tylko ludzie w GitHub, którzy wymyślili ten termin, wiedzą na pewno. Wydaje się jednak oczywiste, że ten wybór terminologiczny odzwierciedla coś w rodzaju następującego punktu widzenia dotyczącego zjawiska „zmian przychodzących do repozytorium z zewnątrz”: Opiekun wykonuje akcję (ciągnie) .

Żądanie jest jednak także działaniem, a wykonawcą tego działania nie jest opiekun, lecz podmiot przekazujący (który wykonał jeszcze więcej czynności, mianowicie pracę). Zatem termin „żądanie ściągnięcia” powoduje zamieszanie co do tego, kim jest agent . Ostatecznie zamieszanie powstaje z powodu rekurencyjnego charakteru żądania: żądanie jest zarówno działaniem głównego agenta, jak i żądaniem przyszłego działania drugiego agenta.

Sytuacja jest dość analogiczna do obecnie popularnych konstrukcji językowych, takich jak „zbudowaliśmy nasz dom” (w miejsce „zapłaciliśmy komuś innemu za budowę naszego domu”), ponieważ odpowiedzialność za pierwotne działanie została przeniesiona z oczywistego pierwotnego agenta na drugorzędny agent pełniący społeczną rolę kierowniczą.

Można z tego wywnioskować, że powodem wyboru terminologicznego jest legitymizacja poglądu, że praca menedżerska jest pracą najwyższej jakości . Ponadto przyczyną nieporozumień dotyczących tego wyboru terminologicznego może być to, że pracownicy niebędący menedżerami mają oczywiście inny punkt widzenia.

jimmymathews
źródło