2016-06-16 7 views
7

Ecco il mio solito flusso di lavoro:Creare una nuova filiale con informazioni d'inseguimento

  1. creare nuovo un ramo: git checkout -b foo
  2. commettere qualche roba
  3. fare un push: git push
  4. arrabbiarsi quella spinta non lo fa lavoro (non impostato a monte)
  5. raggiungere il mouse per evidenziare il comando consigliato di git (ancora arrabbiato)
  6. push con l'impostazione a monte: git push --set-upstream origin foo (rabbia si abbassa)

Invece di 4. a 6., vorrei fare qualche lavoro durante la creazione del nuovo ramo locale (senza necessariamente fare il mio ramo pubblico ancora, quindi non spingere) che uccide i passaggi da 4 a 6. È possibile?

Idealmente qualcosa come git checkout -b foo -t origin, che informa git che ho intenzione di tenere traccia di un ramo con lo stesso nome in origin.

quello che ho cercato

git checkout -b foo --set-upstream origin foo ~>error: unknown option 'set-upstream'

git checkout --track origin/foo ~>fatal: Cannot update paths and switch to branch 'foo' at the same time.

git checkout -b foo --track origin/foo ~>fatal: Cannot update paths and switch to branch 'foo' at the same time

git checkout -b foo --track ~>Branch foo set up to track local branch master.

+0

Quindi il tuo problema sta spingendo con git push origine foo ???? – rick

+0

Sì. Troppo lavoro, rompe il flusso. Voglio essere tutto git checkout -b foo -t' (o qualcosa del genere) e averne fatto. Non voglio pensare se questa è la mia prima spinta o no. – Nicolai

+0

oook, in questo caso il push -u è la mia unica opzione ... – rick

risposta

6

C'è un answer in un argomento leggermente diverso che può aiutare con il tuo flusso di lavoro (non sicuro al 100%).

È possibile eseguire questa operazione con una digitazione inferiore. In primo luogo, cambiare il modo in cui il spinta funziona:

git config --global push.default current 

Ciò dedurre la parte origin my_branch, in tal modo si può fare:

git push -u 

Che vi sia creare il ramo remoto con lo stesso nome e pista esso.

In realtà si può anche omettere lo -u e dovrebbe ancora funzionare.

+0

Cosa ?! Aggiungere '-u' è ancora troppo impegnativo! Oltraggioso! Ma poiché non sembra esserci altra alternativa, accetterò a malincuore. ;) – Nicolai

+1

Ha! In effetti '-u' non è nemmeno necessario (almeno nella versione 2.8.4). Molto bella! – Nicolai

1

Se si desidera impostare up tream sul passo 1. Romperebbe il concetto di git come sistema di controllo della versione distribuito. È possibile farlo con un altro sistema di controllo versione come svn.

In alternativa, è possibile utilizzare il flag -u su git push per impostare upstream, prima di eseguire il commit dei file.

git branch branch-name 
git push -u origin branch-name 
... 
git commit ... 
... 
git push 
+0

Mi spiace, ho appena modificato la domanda per includere quel piccolo dettaglio: non voglio ancora spingere (forse perché sono offline o perché è solo un esperimento). – Nicolai

+0

se si desidera impostare upstream sul passaggio 1. Si interromperà il concetto di git come sistema di controllo della versione distribuito –

+0

Perché ciò interromperà il concetto? – Nicolai

1

Non è semplice come git checkout branch-name senza il -b. Questo crea un ramo di monitoraggio remoto associato al nome del ramo sulla tua origine. Bene, fa per me. Cosa non sto capendo di cosa non funziona per te?

+0

Ho aggiunto "nuovo" al passaggio 1. per chiarire il mio intento, ovvero che voglio un nuovo ramo, non uno che esiste già in remoto. – Nicolai