Co to jest „pochodzenie” w Git?

582

Kiedy biegnę:

git push origin branchname

Czym dokładnie jest origini dlaczego muszę go wpisać przed nazwą oddziału?

zaklęcie
źródło
63
„pochodzenie” to nazwa zdalnego repozytorium, w którym chcesz publikować swoje zobowiązania. Zgodnie z konwencją domyślne zdalne repozytorium nosi nazwę „origin”, ale można jednocześnie pracować z kilkoma pilotami (o różnych nazwach). Więcej informacji tutaj (na przykład): gitref.org/remotes
Benoit Courtine
1
Zauważ też, że pochodzenie jest repozytorium „upstream”: patrz stackoverflow.com/questions/2739376/...
VonC
Ale potem, gdy używasz git fetch, a następnie git -rr, lokalne gałęzie są poprzedzane przez origin / ugh: - / atlassian.com/git/tutorials/syncing/git-fetch
brat
Kasa .git \ config plik zawiera mapowania aliasów na adresy URL, folder .git jest domyślnie ukryty.
Abhijeet Patel

Odpowiedzi:

568

originto alias w twoim systemie dla określonego zdalnego repozytorium. W rzeczywistości nie jest to właściwość tego repozytorium.

Wykonując

git push origin branchname

mówisz, aby pchnąć do originrepozytorium. Nazewnictwo zdalnego repozytorium nie jest wymagane origin: w rzeczywistości to samo repozytorium może mieć inny alias dla innego programisty.

Piloty to po prostu alias przechowujący adres URL repozytoriów. Możesz zobaczyć, jaki adres URL należy do każdego pilota, używając

git remote -v

W pushpoleceniu możesz użyć pilotów lub po prostu użyć adresu URL bezpośrednio. Przykład wykorzystujący adres URL:

git push [email protected]:git/git.git master
doelleri
źródło
1
Czy pojedynczy pilot może być pseudonimem dla wielu innych pilotów? Co jeśli chciałbym, aby jeden pilot naciskał na wiele innych pilotów? Na przykład wypychanie do podstawowego repozytorium i wypychanie do repozytorium zapasowego? Czy w niektórych sytuacjach byłoby to rozsądne? EDYCJA: Istnieje kilka rozwiązań .
Yankee
1
Co się stanie, jeśli pominę słowo kluczowe „pochodzenie”? Kiedy mówimy „git push”, czy i tak nie zamierza wypchnąć wszystkich zatwierdzeń do zdalnego repozytorium? Dodanie słowa kluczowego „pochodzenie” wydaje się zbędne.
Mugen
@Mugen W dokumentacji git pushmożesz zobaczyć, że najpierw sprawdza konfigurację dla tego repozytorium (które można sprawdzić git config --list) pod kątem klucza o nazwie branch.<branchname>.remote. Jeśli nie jest to ustawione, „domyślnie pochodzi” - git-scm.com/docs/git-push
Kenmore
156

originnie jest nazwą zdalnego repozytorium. Jest to raczej lokalny alias ustawiony jako klucz zamiast adresu URL zdalnego repozytorium.

Dzięki temu użytkownik nie musi wpisywać całego zdalnego adresu URL podczas monitowania o wypchnięcie.

Ta nazwa jest ustawiona domyślnie i dla konwencji przez Git przy pierwszym klonowaniu z pilota.

Ten alias nie jest zakodowany na stałe i można go zmienić za pomocą następującego wiersza polecenia:

git remote rename origin mynewalias

Więcej informacji można znaleźć na stronie http://git-scm.com/docs/git-remote .

Antoine Meltzheim
źródło
1
Co się stanie, jeśli pominę słowo kluczowe „pochodzenie”? Kiedy mówimy „git push”, czy i tak nie zamierza wypchnąć wszystkich zatwierdzeń do zdalnego repozytorium? Dodanie słowa kluczowego „pochodzenie” wydaje się zbędne.
Mugen
74

Git ma pojęcie „pilotów”, które są po prostu adresami URL innych kopii Twojego repozytorium. Po sklonowaniu innego repozytorium Git automatycznie tworzy zdalne o nazwie „origin” i wskazuje na niego.

Możesz wyświetlić więcej informacji o pilocie, pisząc git remote show origin.

Jason Malinowski
źródło
1
Polecenia git są bardzo mylące dla początkujących. Myślę, że ma to związek z historią tego systemu kontroli wersji. Pytanie: Zamiast tego git remote show origindlaczego nie po prostu git show origin? Musi być jakiś powód, co to jest? Dzięki.
Stack0verflow,
5
@ Stack0verflow: prawdopodobnie lepiej zadać to pytanie jako nowe pytanie, aby ludzie mogli przeprowadzić badania, jeśli jesteś ciekawy. „git show” jest już innym poleceniem, które pokazuje zatwierdzenie, a technicznie nic nie powstrzymałoby cię od posiadania gałęzi o nazwie „origin” oprócz posiadania pilota o nazwie origin…
Jason Malinowski
44

originto domyślny alias adresu URL zdalnego repozytorium.

Jude Calimbas
źródło
24

Prosty! „origin” jest tym, co nadałeś pseudonimowi swoje zdalne repozytorium, gdy uruchomiłeś takie polecenie:

git remote add origin [email protected]:USERNAME/REPOSITORY-NAME.git

Odtąd Git wie, że „origin” wskazuje na to konkretne repozytorium (w tym przypadku repozytorium GitHub). Mogłeś nazwać to „github”, „repo” lub cokolwiek zechcesz.

Trev14
źródło
19

Byłem tym również zdezorientowany, a poniżej tego się nauczyłem.

Po sklonowaniu repozytorium, na przykład z GitHub:

  • originto alias adresu URL, z którego sklonowano repozytorium. Pamiętaj, że możesz zmienić ten alias.

  • W masterzdalnym repozytorium znajduje się jedna gałąź (aliasowana przez origin). Istnieje również inny masteroddział utworzony lokalnie.

Więcej informacji można znaleźć w odpowiedzi na to pytanie SO: Rozgałęzienie Git: master vs. origin / master vs. piloty / origin / master

umesh prakash bapat
źródło
11

Po sklonowaniu repozytorium git cloneautomatycznie tworzy zdalne połączenie o nazwie originskierowane z powrotem do sklonowanego repozytorium. Jest to przydatne dla programistów tworzących lokalną kopię centralnego repozytorium, ponieważ zapewnia łatwy sposób pobierania zmian lub publikowania lokalnych zatwierdzeń. To zachowanie jest również powodem, dla którego większość projektów opartych na Git nazywa swoje centralne pochodzenie repozytorium.

Włodzimierz
źródło
3

Najlepsza odpowiedź tutaj:

https://www.git-tower.com/learn/git/glossary/origin

W Git „origin” to skrótowa nazwa zdalnego repozytorium, z którego pierwotnie sklonowano projekt. Mówiąc dokładniej, jest on używany zamiast adresu URL oryginalnego repozytorium - a tym samym znacznie ułatwia odwoływanie się do niego.

Alexander Shapkin
źródło
0

Od https://www.git-tower.com/learn/git/glossary/origin :

W Git „origin” to skrótowa nazwa zdalnego repozytorium, z którego pierwotnie sklonowano projekt. Mówiąc dokładniej, jest on używany zamiast adresu URL oryginalnego repozytorium - a tym samym znacznie ułatwia odwoływanie się do niego.

Zauważ, że pochodzenie nie jest w żadnym wypadku „magiczną” nazwą, lecz jedynie standardową konwencją. Chociaż sensowne jest pozostawienie tej konwencji nietkniętej, możesz idealnie zmienić jej nazwę bez utraty jakiejkolwiek funkcjonalności.

W poniższym przykładzie parametr URL polecenia „klon” staje się „początkiem” sklonowanego lokalnego repozytorium:

git clone https://github.com/gittower/git-crash-course.git
Deeksha Sharma
źródło
Kiedy kopiujesz treści napisane przez innych, musisz jasno powiedzieć, że to robisz, i zawsze musisz dołączyć link do źródła. W przeciwnym razie jest to plagiat i jest to powód do usunięcia odpowiedzi. Poza tym twoja odpowiedź została już opublikowana .
Fabio mówi Przywróć Monikę
0

Inne odpowiedzi mówią, że originjest to alias adresu URL zdalnego repozytorium, który nie jest całkowicie dokładny. Należy zauważyć, że adres, który zaczyna się od, httpto adres URL, a adres, który zaczyna się od, git@to identyfikator URI lub identyfikator uniwersalnego zasobu.

Wszystkie adresy URL są identyfikatorami URI, ale nie wszystkie identyfikatory URI są adresami URL.

Krótko mówiąc, kiedy piszesz git remote add origin <URI>, mówisz swojemu lokalnemu gitowi, że za każdym razem, gdy używasz słowa origin, faktycznie masz na myśli określony przez ciebie identyfikator URI. Pomyśl o tym jak o zmiennej o wartości.

I podobnie jak zmienna, można nazwać cokolwiek chcesz (np. github, heroku, destinationItp).

Andy Lindsay
źródło
0

zdalny (alias url repozytorium) → origin (alias nadrzędny) → master (alias oddziału);

  • remotePoziom samo jak working directory, index, repository,

  • origin, mapa oddziału lokalnego repozytorium do oddziału zdalnego repozytorium

山 茶树 和 葡萄 树
źródło