2010-12-17 8 views
11

Kiedy adres URL pobierania i adres URL Push nie będą takie same dla określonego pilota?Git "Fetch URL" i "Push URL", jaka jest różnica?

Na przykład, gdy uruchamiam git remote show central do zdalnego nazwie centralny, wyjście wygląda następująco:

* remote central 
    Fetch URL: [email protected]:/home/aoberoi/Repositories/example.git 
    Push URL: [email protected]:/home/aoberoi/Repositories/example.git 
    HEAD branch: master 
    Remote branch: 
    master tracked 

Ja po prostu nie rozumiem, dlaczego będę pobierania od i popychając do dwóch różnych adresów URL, jaki rodzaj przepływu pracy jest przeznaczony?

Odpowiedz

10

Nie jestem pewien co masz na myśli, ponieważ Twój przykład obejmuje 2 identyczne adresu URL, adresy URL siłą napędową mogą się różnić ze względu na:

  • protokołu numerze: patrz Git protocols: url będzie być nieco inna, ponieważ nie każdy protokół obsługuje operacji wypychania (na przykład http, z wyjątkiem przypadku smart http)
  • repo pośrednich: można popchnąć do reklamy inne repozytorium, które będzie "pośrednikiem" pomiędzy prawdziwym "centralnym" repozytorium a twoim. Operacje certyfikatów mogą być następnie wykonywane (na przykład za pomocą haka po otrzymaniu), a zatwierdzenie zostanie następnie przekazane do "rzeczywistego" zdalnego stamtąd, jeśli te operacje (takie jak "testowanie jednostki", "statyczna analiza kodu" ...) pomyślnie przejść.
    Na przykład takie użycie, patrz:
    "What is the cleverest use of source repository that you have ever seen?".

Mając na uwadze powyższe, commit 697f652 (Git 2.3.1+, Q1/Q2 2015) przez Git opiekuna Junio C Hamano (gitster) zrobić wzmianka:

Wydaje się, że częstym błędem próbować za pomocą pojedynczy pilot (np. "origin"), aby pobrać z jednego miejsca (np. upstream) podczas przesyłania do innego (tj. twojego punktu publikacji).

To nigdy nie będzie działać zadowalająco, i to łatwo zrozumieć, dlaczego, jeśli myślisz o tym, co refs/remotes/origin/* oznaczałby w takim świecie. Zasadniczo nie może odzwierciedlać rzeczywistości.
Jeśli podąża za stanem upstream, nie może się równać z opublikowanym i na odwrót.

dokumentacja nie było oczywiste, że „remote.<nick>.pushURL” i „remote.<nick>.URL” są tam nazwy samego repozytorium pośrednictwem różnych transportów nie dwóch oddzielnych miejscach.

0

Myślę, że można go używać jeśli chciałeś „inscenizacja” płatnikami repo doprowadziłaby do, a następnie inni by popchnąć zmiany stamtąd do głównego repo po sprawdzeniu i zatwierdzeniu. Więc musisz pobrać z głównego repozytorium i przejść do repozytorium.

Powiązane problemy