Git
Popychanie
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:
- Utwórz repozytorium na GitHub (jeśli dotyczy)
- Skopiuj podany adres URL w postaci
https://github.com/USERNAME/REPO_NAME.git
- Przejdź do lokalnego repozytorium i uruchom
git remote add origin URL
- Aby sprawdzić, czy został dodany, uruchom
git remote -v
- Aby sprawdzić, czy został dodany, uruchom
- 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.