2016-03-27 24 views
6

Voglio creare un ramo foo (e averlo estratto) che inizierà sullo stesso commit di origin/bar, ma attualmente non ho il origin/bar estratto. C'è una sola linea che fa questo?Git avviare il ramo da un altro ramo senza rilevamento

+0

Tecnicamente * non puoi * avere 'origine/bar' estratto perché è non un ramo (regolare, locale). Puoi controllare il commit a cui punta il ramo di localizzazione remota. Generalmente vuoi '--no-track' come già risposto a hvd, comunque. – torek

risposta

4

Lo si può fare in un comando singolo: git checkout consente l'opzione --no-track--no-track da specificare direttamente.

git checkout -b foo --no-track origin/bar 
0

Questo dovrebbe fare il trucco:

git branch foo origin/bar 
git checkout foo 

E se insistere su oneline:

git checkout -b foo origin/bar 
+0

Non esattamente un solo rivestimento;) – mwm314

0

Dipende se si desidera che il nuovo ramo per monitorare il telecomando origin/bar.

per tenere traccia della distanza:

git checkout -b foo origin/bar 

Per non monitorare il telecomando:

git checkout -b foo --no-track origin/bar 

(si può sempre aggiungere un rapporto di monitoraggio in seguito.)

-1

Git ha una bandiera per la creazione di un tale ramo:

https://git-scm.com/docs/git-checkout/

--orphan
Creare un nuovo ramo orfano di nome, ha iniziato da e passare ad esso. Il primo impegno fatto su questo nuovo ramo non avrà genitori e sarà la radice di una nuova storia totalmente disconnessa da tutti gli altri rami e commit.

L'indice e l'albero di lavoro sono regolati come se fosse stato eseguito in precedenza git checkout <start_point>.

Ciò consente di avviare una nuova storia che registra una serie di percorsi simili a eseguendo facilmente git commit -a per rendere la radice commesso.

Questo può essere utile quando si desidera pubblicare l'albero da un commit senza esporre la sua cronologia completa. Si potrebbe voler fare questo per pubblicare un ramo open source di un progetto il cui albero corrente è clean, ma la cui cronologia completa contiene bit di codice proprietari o altrimenti ingombranti.

Se si desidera avviare una cronologia disconnessa che registra un insieme di percorsi completamente diverso da quello di, quindi è necessario cancellare l'indice e l'albero di lavoro subito dopo aver creato il ramo orfano eseguendo git rm -rf . dal livello superiore dell'albero funzionante. Successivamente sarai pronto per preparare i tuoi nuovi file, ripopolare l'albero di lavoro, copiandoli da altrove, estraendo un tarball, ecc.

+0

Questo non sembra quello richiesto dall'OP. Non vedo alcuna menzione nella questione della disconnessione della cronologia, vogliono solo passare da una filiale esistente senza preoccuparsi di controllarla prima. –

+0

Concordo, rileggendo la domanda, ho capito per la prima volta che vuole un ramo senza storia :-) – CodeWizard

Problemi correlati