Nawet po przeczytaniu tego pytania: git-push-current-branch wciąż mam trudności ze zrozumieniem, jak napisać polecenie git push. Jak wspomniano w linku do pytania, z dokumentacji nie wynika jasno.
Chciałbym wykorzystać mój przykład z „prawdziwego świata”. Oto, co widzę, gdy wykonuję git status
polecenie na najwyższym poziomie mojej gałęzi:
W oddziale amd_qlp_tester
Twoja gałąź wyprzedza „origin / amd_qlp_tester” o 5 zatwierdzeń.
itp...
Więc nazwa mojej gałęzi jest taka, amd_qlp_tester
że została „rozgałęziona” od głównej gałęzi (jeśli mam błędne terminy, to z powodu mojego tła SVN). Ale jest też nazwa `` origin / amd_qlp_testser ''
Jak więc mam sformułować moje polecenie push?
Czy jest to którykolwiek z poniższych:
git push origin/amd_qlp_tester
git push origin amd_qlp_tester
git push amd_qlp_tester
git push origin
git push
źródło
origin amd_qlp_testser
a nieorigin/amd_qlp_tester
origin
). Gałąź (y), do których mają zostać przekazane wartości domyślne (w obecnych wersjach git),:
jeśli nie są ustawione, co oznaczamatching
, ale powinno się to zmienić w przyszłości.git push
, próbuje wypchnąć wszystkie śledzone gałęzie, w przeciwieństwie do tego, co powiedziałeś ("pilot bieżącej gałęzi jest wartością domyślną").simple
strategii wypychania, co oznacza, że będzie przekazywać tylko bieżącą gałąź. blogs.atlassian.com/2014/06/happened-git-2-0-full-goodiesfatal: Couldn't find remote ref branch-name-here
Jeśli oddział lokalny i oddział zdalny mają tę samą nazwę, możesz to zrobić:
Jeśli nazwa twojego lokalnego i zdalnego oddziału jest inna, możesz to zrobić:
źródło
Odpowiedzi, z którymi się łączysz, dotyczą konfiguracji gita, tak abyś mógł wpisać bardzo krótko
git push
polecenia i kazać im robić, co chcesz. Co jest świetne, jeśli wiesz, czego chcesz i jak to przeliterować w Git-Ese, ale jesteś nowy w git! :-)W Twoim przypadku, Petra Mensika jest (no, „a”) właściwa. Dlatego:
Polecenie zakorzenia się w twoim pliku, aby znaleźć nazwanego „pilota” (np.
git push remote
.git/config
origin
.). Plik konfiguracyjny zawiera:ssh://hostname/path
)git fetch remote
Kiedy po raz pierwszy sklonowałeś repozytorium - kiedykolwiek tak było - git ustaw domyślne wartości dla niektórych z nich. URL jest cokolwiek sklonowany z reszta, jeśli zestaw lub unieważnione, wszystkie są „rozsądne” ... lub domyślnie, hmm, to prawda?
Problem z nimi polega na tym, że ludzie z czasem zmienili zdanie co do tego, co jest „rozsądne”. Tak więc teraz (w zależności od twojej wersji git i tego, czy szczegółowo skonfigurowałeś), git może wypisać wiele ostrzeżeń o zmianach domyślnych w przyszłości. Dodanie nazwy „gałęzi do wypchnięcia” -
amd_qlp_tester
- (1) zamyka ją, a (2) wypycha tylko tę jedną gałąź.Jeśli chcesz wygodniej pchać, możesz to zrobić za pomocą:
lub nawet:
ale to, czy zrobisz to, co chcesz, zależy od tego, czy zgodzisz się z „wczesnymi autorami git”, że oryginalne wartości domyślne są rozsądne, czy też „późniejszymi autorami git”, że oryginalne wartości domyślne nie są rozsądne. Tak więc, jeśli zechcesz (ostatecznie) wykonać wszystkie czynności konfiguracyjne, zobacz pytanie (i odpowiedzi), z którym się łączysz.
A jeśli chodzi o nazwę,
origin/amd_qlp_tester
to w rzeczywistości jest to jednostka lokalna (nazwa przechowywana w repozytorium), mimo że nazywa się to „zdalną gałęzią”. To najlepsze przypuszczenie, „gdzie tamamd_qlp_tester
jest”. Git aktualizuje go, gdy tylko może .źródło
git push origin amd_qlp_tester
dopóki nie będę musiał robić bardziej zaawansowanych rzeczy :)Chciałbym dodać zaktualizowaną odpowiedź - teraz używam gita od jakiegoś czasu, stwierdzam, że często używam następujących poleceń, aby wykonać jakiekolwiek wypychanie (używając oryginalnego pytania jako przykładu):
git push origin amd_qlp_tester
- push do oddziału znajdującego się na zdalnym wywołanymorigin
oddziale o nazwieamd_qlp_tester
.git push -u origin amd_qlp_tester
- to samo, co poprzednio, ale ustawia łączenie w górę oddziału lokalnego do oddziału zdalnego, dzięki czemu następnym razem możesz po prostu użyć,git push/pull
jeśli nie jest jeszcze połączony (wystarczy to zrobić raz).git push
- Po skonfigurowaniu upstream możesz po prostu użyć tej krótszej wersji.-u
Opcja Uwaga to krótka wersja--set-upstream
- są takie same.źródło