Szukaj…


Wprowadzenie

Po zmianie, pomostowaniu i zatwierdzeniu kodu za pomocą Git wymagane jest wypychanie, aby udostępnić zmiany innym osobom i przenieść zmiany lokalne na serwer repozytorium. W tym temacie opisano, jak poprawnie wypychać kod za pomocą Git.

Składnia

  • git push [-f | --force] [-v | --verbose] [<remote> [<refspec> ...]]

Parametry

Parametr Detale
--siła Zastępuje zdalne odwołanie, aby pasowało do lokalnego odwołania. Może powodować, że zdalne repozytorium traci zatwierdzenia, więc używaj go ostrożnie .
--gadatliwy Biegnij słownie.
<remote> Zdalne repozytorium będące miejscem docelowym operacji wypychania.
<refspec> ... Określ zdalne odwołanie do zaktualizowania przy użyciu lokalnego odwołania lub obiektu.

Uwagi

Upstream i Downstream

Jeśli chodzi o kontrolę źródła, kopiujesz” (klonujesz, kasujesz itp.) Z repozytorium. Informacje płynęły do Ciebie „poniżej”.

Kiedy wprowadzasz zmiany, zwykle chcesz odesłać je z powrotem „w górę”, aby trafiły do tego repozytorium, aby wszyscy pobierający z tego samego źródła pracowali z tymi samymi zmianami. Jest to głównie kwestia społeczna dotycząca tego, jak każdy może koordynować swoją pracę, a nie techniczny wymóg kontroli źródła. Chcesz wprowadzić zmiany do głównego projektu, aby nie śledzić rozbieżnych linii rozwoju.

Czasami przeczytasz o menedżerach pakietów lub wydaniach (ludzie, nie narzędzie) mówiące o przesyłaniu zmian do „upstream”. Zazwyczaj oznacza to, że musieli dostosować oryginalne źródła, aby mogli stworzyć pakiet dla swojego systemu. Nie chcą ciągle wprowadzać tych zmian, więc jeśli wyślą je „w górę” do oryginalnego źródła, nie powinni mieć do czynienia z tym samym problemem w następnej wersji.

( Źródło )

Pchać

git push

popchnie twój kod do twojego istniejącego upstream. W zależności od konfiguracji wypychania będzie albo wypychał kod z bieżącej gałęzi (domyślnie w Git 2.x) lub ze wszystkich gałęzi (domyślnie w Git 1.x).

Określ zdalne repozytorium

Podczas pracy z git może być przydatne posiadanie wielu zdalnych repozytoriów. Aby określić zdalne repozytorium, do którego można przesłać, po prostu dołącz jego nazwę do polecenia.

git push origin

Określ oddział

Aby przekazać do określonej gałęzi, powiedz feature_x :

git push origin feature_x

Ustaw gałąź zdalnego śledzenia

O ile gałąź, nad którą pracujesz, nie pochodzi ze zdalnego repozytorium, po prostu użycie git push nie zadziała za pierwszym razem. Musisz wykonać następujące polecenie, aby powiedzieć gitowi, aby wypchnął bieżącą gałąź do określonej kombinacji pilot / gałąź

git push --set-upstream origin master

Tutaj master jest nazwą oddziału na zdalnym origin . Możesz użyć -u jako skrótu dla --set-upstream .


Pchanie do nowego repozytorium

Aby przekazać do repozytorium, które jeszcze nie zostało utworzone lub jest puste:

  1. Utwórz repozytorium na GitHub (jeśli dotyczy)
  2. Skopiuj podany adres URL w postaci https://github.com/USERNAME/REPO_NAME.git
  3. Przejdź do lokalnego repozytorium i uruchom git remote add origin URL
    • Aby sprawdzić, czy został dodany, uruchom git remote -v
  4. Uruchom git push origin master

Twój kod powinien być teraz na GitHub

Aby uzyskać więcej informacji, zobacz Dodawanie zdalnego repozytorium


Wyjaśnienie

Kod push oznacza, że git przeanalizuje różnice między twoimi lokalnymi zatwierdzeniami a zdalnymi i wyśle je do napisania w górę. Gdy wypychanie się powiedzie, Twoje lokalne i zdalne repozytorium są synchronizowane, a inni użytkownicy mogą zobaczyć twoje zatwierdzenia.

Aby uzyskać więcej informacji na temat pojęć „upstream” i „downstream”, patrz Uwagi .

Force Pushing

Czasami, gdy zmiany lokalne są niezgodne ze zmianami zdalnymi (tj. Gdy nie można szybko przewinąć gałęzi zdalnej lub gałąź zdalna nie jest bezpośrednim przodkiem gałęzi lokalnej), jedynym sposobem na wprowadzenie zmian jest wymuszenie zmiany .

git push -f

lub

git push --force

Ważne notatki

Spowoduje to zastąpienie wszelkich zdalnych zmian, a twój pilot będzie pasował do twojego lokalnego.

Uwaga: użycie tego polecenia może spowodować utratę zatwierdzeń przez zdalne repozytorium. Ponadto odradza się wymuszanie wypychania, jeśli udostępniasz to zdalne repozytorium innym osobom, ponieważ ich historia zachowa każde nadpisane zatwierdzenie, tym samym uniemożliwiając ich synchronizację ze zdalnym repozytorium.

Zasadniczo wymuszaj push tylko wtedy, gdy:

  • Nikt oprócz ciebie nie wyciągnął zmian, które próbujesz zastąpić
  • Możesz zmusić wszystkich do klonowania nowej kopii po wymuszonym wypchnięciu i zmusić wszystkich do wprowadzenia w niej zmian (ludzie mogą cię za to nienawidzić).

Wepchnij określony obiekt do zdalnej gałęzi

Ogólna składnia

git push <remotename> <object>:<remotebranchname>

Przykład

git push origin master:wip-yourname

Zepchnie twoją gałąź master do gałęzi pochodzenia wip-yourname (przez większość czasu, do repozytorium, z którego sklonowałeś).


Usuń zdalną gałąź

Usunięcie zdalnej gałęzi jest odpowiednikiem wypchnięcia do niej pustego obiektu.

git push <remotename> :<remotebranchname>

Przykład

git push origin :wip-yourname

wip-yourname zdalną gałąź wip-yourname

Zamiast używania dwukropka można również użyć flagi --delete, która w niektórych przypadkach jest lepiej czytelna.

Przykład

git push origin --delete wip-yourname

Wciśnij jeden zatwierdzenie

Jeśli masz w gałęzi jedno zatwierdzenie, które chcesz wypchnąć do pilota bez wypychania czegokolwiek innego, możesz użyć następujących

git push <remotename> <commit SHA>:<remotebranchname>

Przykład

Zakładając taką historię gitów

eeb32bc Commit 1 - already pushed
347d700 Commit 2 - want to push
e539af8 Commit 3 - only local
5d339db Commit 4 - only local

aby przekazać tylko zatwierdzić 347d700 do zdalnego urządzenia głównego, użyj następującego polecenia

git push origin 347d700:master

Zmiana domyślnego zachowania push

Bieżące aktualizuje oddział w zdalnym repozytorium, który ma nazwę z bieżącym działającym oddziałem.

git config push.default current

Proste wypycha do gałęzi upstream, ale nie będzie działać, jeśli gałąź upstream jest nazywana czymś innym.

git config push.default simple

Upstream wypycha do gałęzi upstream, bez względu na to, jak się nazywa.

git config push.default upstream

Dopasowanie wypycha wszystkie gałęzie, które pasują na lokalnym i zdalnym git config push.default w górę

Po ustawieniu preferowanego stylu użyj

git push 

zaktualizować zdalne repozytorium.

Wciśnij tagi

git push --tags

Pcha wszystkie git tags do lokalnego repozytorium, które nie znajdują się w zdalnym.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow