Od jakiegoś czasu korzystam z gita, ale nigdy nie musiałem sam tworzyć nowego zdalnego repo i byłem tego ciekawy. Czytam samouczki i nie wiem, jak uruchomić „git push”.
Jeśli po prostu git push
go użyję, poprosi mnie o wyświetlenie domyślnej gałęzi (?), Aby wskazać? Jaka jest różnica między tymi dwiema opcjami, które dostarcza mi?
git config --global push.default matching
git config --global push.default simple
Dopasowanie tylko wypycha wszystkie gałęzie, które mam na moim lokalnym repozytorium, a jeśli się nie zgadzają, muszę ręcznie nakazać, aby wypchnął wszystkie nowe lokalne oddziały, prawda? Czy to najlepsza praktyka, czy jest prosta?
git
git-push
git-pull
git-remote
Josh
źródło
źródło
pull.default
dostępna jest lokalna aktualizacja wszystkich tych oddziałówOdpowiedzi:
git push
może wypchnąć wszystkie gałęzie lub jedną zależną od tej konfiguracji:Wciśnij wszystkie gałęzie
Popchnie wszystkie gałęzie do odległej gałęzi i połączy je. Jeśli nie chcesz wypychać wszystkich gałęzi, możesz wypchnąć tylko bieżącą gałąź.
Wciśnij tylko bieżącą gałąź
Moim zdaniem lepiej jest skorzystać z tej opcji i przesuwać kod gałąź po gałęzi. Lepiej pchać gałęzie ręcznie i indywidualnie.
źródło
push.default current
z @UpAndAdam. Nie wie o tym.simple
nie jest już opcją. W1.7.8.4
(i wcześniej?) Powoduje błąd podczas próby wypchnięcia. alecurrent
nadal jest dostępnytracking
-> push bieżącą gałąź do jej gałęzi upstream.simple
nie ma sensu, jest sprzeczny z tą odpowiedzią i jest niepoprawny - co powoduje, że ta odpowiedź jest myląca. Połączona strona mówi:simple
„będzie wypychać gałęzie jeden po drugim. Przeważnie związane z bieżącym oddziałem”. Czy to oznacza, że będzie popychał gałęzie sekwencyjnie, a nie równolegle? Co oznacza „najczęściej połączony”? Następnie opis dlasimple
kontynuuje cytowanie opisumatching
, co, jak można sądzić, oznacza, że opismatching
dotyczy równieżsimple
. Ale oczywiście nie jest to prawdą.Z dokumentacji GIT: Git Docs
Poniżej podano pełne informacje. W skrócie,
simple
popchnie tylkocurrent working branch
i nawet wtedy, gdy będzie miał również tę samą nazwę na pilocie. Jest to bardzo dobre ustawienie dla początkujących i stanie się domyślnym wGIT 2.0
Natomiast
matching
wypycha wszystkie gałęzie lokalnie, które mają takie same nazwy na pilocie. (Bez względu na aktualny działający oddział). Oznacza to, że potencjalnie zostanie przekazanych wiele różnych gałęzi, w tym te, których możesz nawet nie chcieć udostępniać.W moim osobistym zastosowaniu zazwyczaj używam innej opcji:
current
która popycha bieżącą działającą gałąź (ponieważ zawsze rozgałęziam się dla wszelkich zmian). Ale dla początkującego sugerowałbymsimple
źródło
git push origin master
że zrobi to samo. Istotą trybów i ustawień domyślnych jest generalnie to, co dzieje się, gdy po prostu mówisz,git push
a nie mówisz zdalnie ani odgałęzieniu. Jakie ustawienie domyślne? masz na myśli domyślne ustawienie push.default? domyślne ustawienie, w której wersji git ... jeśli go nie dostaniesz, twój komentarz jest bardzo niejasny.Informacje o wersji Git v2.0
Uwagi dotyczące zgodności z poprzednimi wersjami
Kiedy
git push [$there]
nie mówi, co naciskać, do tej pory używaliśmy tradycyjnej semantyki „dopasowywania” (wszystkie twoje gałęzie zostały wysłane do pilota, o ile istnieją już gałęzie o tej samej nazwie). W Git 2.0 domyślną jest teraz „prosta” semantyka, która popycha:tylko bieżąca gałąź do gałęzi o tej samej nazwie i tylko wtedy, gdy bieżąca gałąź jest skonfigurowana do integracji z tą gałęzią zdalną, jeśli pchasz do tego samego pilota, z którego pobierasz; lub
tylko bieżąca gałąź do gałęzi o tej samej nazwie, jeśli wypychasz do pilota, który nie jest tam, gdzie zwykle pobierasz.
Aby to zmienić, możesz użyć zmiennej konfiguracyjnej „push.default”. Jeśli jesteś starszym timerem, który chce nadal używać semantyki „dopasowywania”, możesz na przykład ustawić zmienną na „dopasowywanie”. Przeczytaj dokumentację dla innych możliwości.
Kiedy
git add -u
igit add -A
są uruchamiane w podkatalogu bez określania ścieżek do dodania w wierszu poleceń, działają na całym drzewie w celu zachowania spójności zgit commit -a
innymi poleceniami (te polecenia działały tylko w bieżącym podkatalogu). Powiedzgit add -u .
lubgit add -A .
jeśli chcesz ograniczyć operację do bieżącego katalogu.git add <path>
jest taki sam jakgit add -A <path>
teraz, więcgit add dir/
zauważy ścieżki, które usunąłeś z katalogu i zarejestruje usunięcie. W starszych wersjach Git,git add <path>
używane do ignorowania usuwania. Jeśli chcesz, możeszgit add --ignore-removal <path>
dodać tylko dodane lub zmodyfikowane ścieżki<path>
.źródło