Risposta breve
Se in realtà ti piace essere esplicito e utilizzare l' -u
opzione quando necessario, ma semplicemente non vuoi digitare il tutto:
git push -u origin foo
Quindi puoi usare il seguente alias:
[alias]
push-u = !git push -u origin $(git symbolic-ref --short HEAD)
E digita semplicemente:
git push-u
Risposta lunga
In genere, la necessità di -u
(abbreviazione di --set-upstream
) è quando abbiamo appena creato un nuovo ramo locale e un nuovo commit e vogliamo spingerlo a monte. Il repository remoto non ha ancora il nuovo ramo, quindi dobbiamo dire a git di creare e tracciare il ramo remoto prima di eseguire il commit. Questo è necessario solo per la prima spinta sul ramo. Ecco uno scenario tipico:
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
Personalmente, mi piace la necessità di essere esplicito con git push -u
quando creo il ramo remoto: è un'operazione piuttosto significativa, condividere un ramo completamente nuovo con il mondo.
Tuttavia, odio che dobbiamo scrivere esplicitamente git push -u origin foo
. Non solo è una seccatura digitare, ma soprattutto, è abbastanza soggetto a errori! È facile commettere un errore quando si digita il nome del ramo e il nuovo ramo remoto non avrà lo stesso nome del ramo locale! Nella maggior parte dei casi, in realtà, si desidera che il repository a monte sia origin
e il ramo a monte abbia lo stesso nome del ramo locale.
Pertanto, sto usando il seguente alias nel mio .gitconfig
, che è un sottoinsieme dell'eccellente risposta fornita da Mark :
[alias]
push-u = !git push -u origin $(git symbolic-ref --short HEAD)
Ora possiamo fare quanto segue, che è ancora esplicito, ma meno soggetto a errori:
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.default
ebranch.<name>.merge
in git-config (1) ?