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?


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 git@github.com:git/git.git master

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 .


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.


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


24

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

git remote add origin git@github.com: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.


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


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.



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

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).


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.