Git-Jaka jest różnica między push.domyślne "dopasowanie" i " proste"

Używam Gita już od jakiegoś czasu, ale nigdy nie musiałem sam konfigurować nowego zdalnego repo i byłem ciekaw, jak to zrobić. Czytam tutoriale i jestem zdezorientowany, jak uruchomić "git push".

Jeśli po prostu użyję git push, to wyświetli mi się domyślna gałąź(?/ align = "left" / Jaka jest różnica między tymi dwoma opcjami, które mi dostarcza?

git config --global push.default matching
git config --global push.default simple

Dopasowanie po prostu popycha gałęzie, które mam na moim lokalnym repo, a jeśli nie pasują, muszę następnie ręcznie powiedz mu, aby wypchnął wszystkie nowe lokalne oddziały, które mam, prawda? Czy jest to najlepsza praktyka, czy jest prosta?

Author: Tom Panning, 2014-02-18

3 answers

git push może wypchnąć wszystkie gałęzie lub jedną zależną od tej konfiguracji:

Push all branches

git config --global push.default matching

Wypchnie wszystkie gałęzie do odległej gałęzi i połączy je. Jeśli nie chcesz naciskać wszystkich gałęzi, możesz nacisnąć tylko bieżącą gałąź.

Naciśnij tylko bieżącą gałąź

git config --global push.default simple

Moim zdaniem lepiej jest użyć tej opcji i wcisnąć gałąź kodu po gałęzi. Lepiej popychać gałęzie ręcznie i indywidualnie

Aby przeczytać więcej, przejdź do tego blogu

 272
Author: Lalit Sachdeva,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-03 08:01:19

Z dokumentacji GIT: Git Docs

Poniżej podano pełne informacje. W skrócie, simple naciśnie tylko current working branch, a nawet wtedy tylko wtedy, gdy ma również tę samą nazwę na pilocie. Jest to bardzo dobre ustawienie dla początkujących i stanie się domyślne w GIT 2.0

Podczas gdy matchingwypchnie wszystkie gałęzie lokalnie, które mają tę samą nazwę na pilocie. (Bez względu na twój obecny dział roboczy ). Oznacza to, że potencjalnie wiele różnych gałęzi zostanie popchniętych, włącznie z tymi, którymi możesz nawet nie chcieć się dzielić.

W moim osobistym użyciu zazwyczaj używam innej opcji: current, która popycha bieżącą działającą gałąź, (ponieważ zawsze rozgałęziam się dla jakichkolwiek zmian). Ale dla początkującego proponuję simple

Przyj.default
Definiuje akcję, którą git push powinien wykonać, jeśli żaden refspec nie jest wyraźnie podane. Różne wartości są dobrze dostosowane do konkretnych przepływy pracy; na przykład w czysto centralnym przepływie pracy (tj. źródło jest równa celowi push), pod prąd jest prawdopodobnie tym, co chcesz. Możliwe wartości to:

Nic-nie wypychaj niczego (błąd), chyba że refspec jest wyraźnie podane. Przeznaczony jest przede wszystkim dla osób, które chcą uniknąć błędy, zawsze będąc wyraźnym.

Current-naciśnij bieżącą gałąź, aby zaktualizować gałąź o tej samej nazwisko na końcu odbiorczym. Działa zarówno w centralnym, jak i poza centralnym przepływy pracy.

Upstream-odepchnij bieżącą gałąź do oddziału, którego zmiany są zwykle zintegrowane z bieżącą gałęzią (zwaną @{upstream}). Ten tryb ma sens tylko wtedy, gdy naciskasz na to samo repozytorium, z którego normalnie pobierasz (np. centralny obieg pracy).

Proste - w scentralizowanym obiegu pracy, praca jak w upstream z dodanym bezpieczeństwo, aby odmówić naciśnięcia, jeśli nazwa gałęzi upstream jest inna od lokalnego.

Podczas naciskania na pilota, który różni się od pilota ty normalnie ciągnij, pracuj jako prąd. Jest to najbezpieczniejsza opcja i jest nadaje się dla początkujących.

Ten tryb stanie się domyślnym w Git 2.0.

Matching-wypycha wszystkie gałęzie o tej samej nazwie na obu końcach. To sprawia, że repozytorium, które naciskasz, zapamiętuje zbiór gałęzi które zostaną wypchnięte (np. jeśli zawsze naciskasz maint i master tam i nie ma innych gałęzi, repozytorium, do którego naciskasz, będzie miało te dwie gałęzie, a twój lokalny maint i master będzie popchnięty tam).

Aby efektywnie korzystać z tego trybu, musisz upewnić się, że wszystkie gałęzie you would push out are ready to be push out before running git push, ponieważ cały ten tryb ma pozwolić na pchnięcie wszystkich gałęzie za jednym zamachem. Jeśli Zwykle kończysz pracę tylko na jednej gałęzi i wypchnąć wynik, podczas gdy inne gałęzie są niedokończone, ten tryb jest nie dla Ciebie. Również ten tryb nie nadaje się do pchania do wspólnego centralne repozytorium, podobnie jak inne osoby może dodawać tam nowe oddziały lub zaktualizuj końcówki istniejących gałęzi poza Twoją kontrolą.

Jest to obecnie domyślne, ale Git 2.0 zmieni domyślną wartość na proste.

 84
Author: UpAndAdam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-20 16:55:17

Git v2. 0 Release Notes

Uwagi o zgodności wstecznej

Kiedy git push [$there] nie mówi co naciskać, użyliśmy dotychczas tradycyjną semantykę" pasującą " (wszystkie gałęzie zostały wysłane do odległych, o ile istnieją już oddziały o tej samej nazwie tam). W Git 2.0 domyślną wartością jest teraz semantyka" simple", który wypycha:

  • Tylko bieżącej gałęzi do gałęzi o tej samej nazwie i tylko gdy bieżąca gałąź jest ustawiona na integrację z tym pilotem branch, jeśli naciskasz na ten sam pilot, z którego pobierasz; lub

  • Tylko bieżącej gałęzi do gałęzi o tej samej nazwie, jeśli pchają do pilota, który nie jest tam, skąd Zwykle pobierasz.

Możesz użyć zmiennej konfiguracyjnej " push.default " do zmiany to. Jeśli jesteś staruszkiem, który chce nadal korzystać z semantyki "matching" , można ustawić zmienną na "matching", dla przykład. Przeczytaj dokumentację dla innych możliwości.

Gdy git add -u i {[2] } są uruchamiane wewnątrz podkatalogu bez określenia, które ścieżki dodać w wierszu poleceń, operować na całym drzewie dla spójności z git commit -a i innych poleceń (polecenia te były używane tylko na bieżącym podkatalog). Powiedz git add -u . lub git add -A . jeśli chcesz ogranicz operację do bieżącego katalogu.

git add <path> jest tym samym co git add -A <path> teraz, tak że git add dir/ zauważy ścieżki usunięte z katalogu i Nagraj usunięcie. W starszych wersjach Git, git add <path> używane aby zignorować przeprowadzki. Możesz powiedzieć git add --ignore-removal <path> do dodaj tylko dodane lub zmodyfikowane ścieżki w <path>, jeśli naprawdę chcesz.

 2
Author: CodeWizard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-04 16:44:34