2013-10-16 14 views
11

Io di solito corro:"git push" e "git push --tags" nello stesso comando?

git push 
git tag v4.7 
git push --tags 

Sia la prima e la terza le operazioni di connettersi al server, che spreca il tempo.
Voglio renderlo più veloce spingendo solo una volta. Quale comando (s) raggiungerebbe questo?
È in una bash script e deve essere eseguito correttamente in qualsiasi ramo, non solo master.

Leggendo il manuale, non credo git push all è la soluzione:

--all: Invece di nominare ogni ref a spingere, specifica che tutti gli arbitri sotto refs/teste/essere spinto.

--tags: tutti i riferimenti ai riferimenti/tag vengono inseriti, oltre ai riferimenti specificati esplicitamente nella riga di comando.

+0

E a proposito di 'git push --tags HEAD'? –

+0

HEAD significa il ramo attuale, quindi posso usarlo come un "refspec esplicitamente elencato" anzi! Potresti postare questo come risposta in modo che io possa accettarlo? –

risposta

11

L'opzione più vicina può essere:

git push --follow-tags 

Spingere tutti gli arbitri che sarebbero spinti senza questa opzione, e anche spingere i tag annotati nei rif/tag che mancano dal telecomando ma puntano a committish che sono raggiungibili dai refs che vengono spinti.

+0

Anche questa sembra una soluzione valida ... Quanto è diverso da 'git push --tags HEAD'? –

+0

@NicolasRaoul Come 'git push', spinge anche altri rami di tracciamento (dipende dalla configurazione' push.default'), non solo 'HEAD', e spinge i tag sui rami spinti, non su tutti i tag. – Kornel

+0

Non penso sia corretto. AFAIK 'git push' spinge solo il ramo corrente. –

-4

È possibile utilizzare git push origin <your branch name>

+0

Questo non risponde alla domanda perché non spinge i tag. –

4

In base alla documentazione di --tags è possibile specificare ulteriori punti di riferimento da spingere.

Così si può semplicemente utilizzare

git push --tags origin HEAD 
+2

Questo non sembra funzionare: "fatale: 'HEAD' non sembra essere un repository git". 'git push origin HEAD --tags' funziona, però. –

+0

@MariusGedminas: Grazie per averlo capito. Fisso. –

1

È possibile creare alias per avere un veloce accesso a questo comando:

git config --global alias.p '!git push && git push --tags' 

o

git config --global alias.pa '!git push --all && git push --tags' 

ora si può fare come this:

git tag v4.7 
git p 

Ulteriori informazioni sugli alias here

+0

Suggerimento interessante, ma questo non riduce il numero di richieste fatte al server, giusto? Come spiegato nella domanda, è per uno script bash, quindi la mia domanda non riguarda la digitazione di meno. –