Qual è la differenza tra git clone
e git checkout
?
Qual è la differenza tra git clone
e git checkout
?
Risposte:
La pagina man per il checkout: http://git-scm.com/docs/git-checkout
La pagina man per il clone: http://git-scm.com/docs/git-clone
Per riassumere, il clone serve per recuperare i repository che non hai, il checkout serve per passare da una filiale all'altra in un repository che hai già.
Nota: per coloro che hanno un background SVN / CVS e non conoscono Git, l'equivalente di git clone
in SVN / CVS è checkout
. La stessa formulazione di termini diversi è spesso confusa.
checkout
può essere utilizzato anche per altre cose, come sovrascrivere un file nella copia di lavoro con una versione di quel file da un'altra revisione.
git clone è quello di recuperare i tuoi repository dal server git remoto.
git checkout è quello di verificare lo stato desiderato del repository (come rami o file particolari).
Ad esempio, sei attualmente nel ramo principale e vuoi passare al ramo di sviluppo.
git checkout develop_branch
Ad esempio, si desidera effettuare il checkout a un determinato stato di un determinato file
git checkout commit_point_A -- <filename>
Ecco un buon riferimento per imparare Git, ti fa capire molto più facilmente.
git clone
funzionerà anche con repository locali.
Una cosa da notare è la mancanza di qualsiasi "Copyout" all'interno di git. Questo perché hai già una copia completa nel tuo repository locale - il tuo repository locale è uno clone
dei repository upstream scelti. Quindi hai effettivamente un personale checkout
di tutto , senza mettere un po 'di "blocco" su quei file nel repository di riferimento.
Git fornisce i valori hash SHA1 come meccanismo per verificare che la copia che hai di un file / albero delle directory / commit / repo sia esattamente uguale a quella usata da chiunque sia in grado di dichiarare le cose come "Master" all'interno della gerarchia della fiducia. Questo evita tutti quei "blocchi" che causano il soffocamento della maggior parte dei sistemi SCM (con i soliti problemi di copie private, grandi fusioni e nessun reale controllo o gestione del codice sorgente ;-)!
Semplicemente git checkout ha 2 usi
git checkout <existing_local_branch_name>
git checkout -b <new_feature_branch_name>
, creerai un nuovo ramo con i contenuti del master e passerai al ramo appena creatoPuoi trovare più opzioni sul sito ufficiale
-b
opzione è fantastica che crea un nuovo ramo locale e lo verifica allo stesso tempo con un singolo comando. Lo amo!
checkout
può essere utilizzato per molti casi:
1o caso : passare da un ramo all'altro nel repository locale Ad esempio:
git checkout exists_branch_to_switch
Puoi anche creare un nuovo ramo e passare a questo caso con -b
git checkout -b new_branch_to_switch
2 ° caso : ripristinare il file da x rev
git checkout rev file_to_restore
...