Krótka odpowiedź
Jeśli faktycznie lubisz być wyraźny i korzystasz z -uopcji, gdy jest to konieczne, ale po prostu nie chcesz wpisywać całości:
git push -u origin foo
Następnie możesz użyć następującego aliasu:
[alias]
push-u = !git push -u origin $(git symbolic-ref --short HEAD)
I po prostu wpisz:
git push-u
Długa odpowiedź
Zazwyczaj potrzeba -u(shorthand for --set-upstream) występuje, gdy właśnie utworzyliśmy nową gałąź lokalną i zatwierdzenie, a chcemy wypchnąć to w górę. Zdalne repozytorium nie ma jeszcze nowej gałęzi, więc musimy powiedzieć gitowi, aby utworzył i śledził zdalną gałąź przed wypchnięciem zatwierdzenia. Jest to konieczne tylko przy pierwszym pchnięciu gałęzi. Oto typowy scenariusz:
git checkout -b foo # Create local branch
git commit -m "Foo" # Create local commit
git push -u origin foo # Create and track remote branch, and push commit
git commit -m "Bar" # Create local commit
git push # Push commit
Osobiście lubię potrzebę wyraźnego wyrażenia się git push -upodczas tworzenia zdalnego oddziału: jest to dość znacząca operacja, udostępniająca światu zupełnie nową gałąź.
Jednak nienawidzę tego, że musimy wyraźnie pisać git push -u origin foo. Nie tylko jest to trudne do wpisania, ale co ważniejsze, jest dość podatne na błędy! Podczas wpisywania nazwy oddziału łatwo jest popełnić błąd, a nowy oddział zdalny nie będzie miał takiej samej nazwy jak oddział lokalny! W większości przypadków naprawdę chcesz, aby repozytorium zewnętrzne byłoorigin , a gałąź nadrzędna miała taką samą nazwę jak gałąź lokalna.
Dlatego używam w moim aliasie .gitconfig, który jest podzbiorem doskonałej odpowiedzi udzielonej przez Marka :
[alias]
push-u = !git push -u origin $(git symbolic-ref --short HEAD)
Teraz możemy wykonać następujące czynności, które nadal są jawne, ale mniej podatne na błędy:
git checkout -b foo # Create local branch
git commit -m "Foo" # Create local commit
git push-u # Create and track remote branch, and push commit
git commit -m "Bar" # Create local commit
git push # Push commit
push.defaultibranch.<name>.mergew git-config (1) ?