2009-10-23 18 views
12

Ho visto questo comando girano su vari siti.GIT - Differenza tra il monitoraggio di un ramo contro clonazione

git checkout --track -b <...>

Se creo un repo nuda su un server remoto e lavorare da due luoghi diversi, qual è il più veloce e il modo in cui "approvato" di farlo?

Quello che ho fatto è stato, ho creato il pronti contro termine iniziale sul mio portatile e poi spinto le modifiche ' "origine" dove la mia VPS pronti contro termine è (la nuda pronti contro termine). Ora, sul mio desktop, dovrei clonare il mio repository? Lo chiedo perché ho due rami, "dev" e "master". Una volta che sono sul mio tavolo, non ero sicuro se devo essere "tracking" del repo o dovrei clonazione prima? Che cosa succede se volevo lavorare sul ramo dev, è che quando eseguo il checkout usando la direttiva --track?

Ecco quello che ho fatto finora.

sul computer portatile

cd devproject 
git init 
git add . 
git commit -m "My first commit" 

Sul VPS Repo

mkdir /home/sam/devproject.git 
cd /home/sam/devproject.git 
git --bare init 
exit 

Torna portatile

cd devproject 
git remote add origin ssh://myserver.com/home/sam/devproject.git 

Sul Desktop (??)

git clone <..> 

risposta

9

È clone un repository, ma si pista un ramo. Il comando di checkout che hai postato non è completa:

git checkout --track -b new_local_branch_name origin/remote_branch_name 

Così sarebbero i passaggi necessari:

  1. Clone repository remoto.
  2. traccia La filiali remote.
+0

Giusto, l'ho rimosso apposta. Quindi, se ho 2 rami (master/dev) devo tracciarli entrambi? Ogni volta che clonato un repository, devo tenere traccia dei rami. Quindi apporta le modifiche al mio clone e git push/pull di conseguenza. Sì? – luckytaxi

+0

Fondamentalmente, sì. Ma non devi seguire esplicitamente il ramo principale. – innaM

+3

Per chiarire il commento di Manni, il repository imposta automaticamente il ramo master per il tracciamento quando è clonato. (Per essere precisi, imposta il ramo inizialmente estratto, che è l'HEAD sul repository remoto da cui è stato clonato, ma generalmente è master.) – Cascabel

4

Il comando precedente non funzionerà se non si è in un repository. Per lavorare con git, è necessario sempre creare prima un repository, clonando uno che esiste già o utilizzando git-init e iniziando da zero.

git checkout --track -b <branch> <remote-branch> 
git checkout --track <remote-branch> 

Questi due comandi creare una nuova filiale locale per monitorare <remote-branch>. Il primo lo nomina manualmente <branch>; il secondo usa lo stesso nome del telecomando.

Ricordare che il tracciamento non significa aggiornamento automatico - semplicemente fa cose come specificare da dove il ramo deve spingere/tirare e lasciare che lo stato di git dia "il tuo ramo è dietro all'origine/padrone di 5 si impegna, e può essere veloce anticipati ".

+0

Quindi sul mio desktop, eseguo git init. (sarà vuoto) e quindi eseguire git checkout? O dovrei fare la clonazione? – luckytaxi

+0

Hai già il contenuto desiderato in un repository da qualche parte? Clona. Lo stai creando per la prima volta? Usa git init. Ancora una volta, git-checkout controlla semplicemente (e probabilmente crea) del contenuto che è già nel repository. – Cascabel

+0

Sì, permettimi di aggiornare il thread del messaggio principale. – luckytaxi

0

Quando si utilizza

git checkout --track -b local_branch_name origin/remote_branch_name 

(di solito con 'local_branch_name' lo stesso di 'remote_branch_name', per il quale esiste scorciatoia:
"git checkout -b --track origine/NOME_RAMO"), significa creato il ramo locale denominato "local_branch_name", sul quale è possibile creare commit, per il quale il ramo upstream sarà ramo di monitoraggio remoto denominato "remote_branch_name" (che tiene traccia/segue questo ramo di monitoraggio remoto).

È necessario ricordare che non è possibile eseguire il commit direttamente su "origine/remote_branch_name"; questo ramo di localizzazione remota ha lo scopo di tracciare l'avanzamento del ramo "remote_branch_name" in "origine" remota ("origine" è il nome predefinito del telecomando clonato da).

+0

Detto ciò, dovrei farlo anche dal mio portatile (dove tutto è iniziato)? Non sto capendo quale sarebbe la differenza sul mio desktop come supposto per il mio portatile. Sul mio portatile, ho creato il repository locale e poi l'ho trasferito al mio repository su un server remoto. Stai dicendo che dovrei "tracciare" il repository sul mio laptop dal repository nudo? – luckytaxi

+0

Err ... sebbene la documentazione di Git usi "tracking" per riferirsi a due concetti diversi nella sua documentazione (rami di tracciamento remoto e tracciamento di rami in qualche altro ramo), non usa questa parola quando descrive le relazioni tra repository. Un repository può essere clone di un altro repository. Puoi recuperare da qualche repository, puoi inviare ad alcuni repository. –

Problemi correlati