2014-04-12 6 views
6

Esiste un modo standard per sincronizzare git workspace con un'altra directory. Supponiamo di avere una directory sotto il controllo della versione git. Quella directory viene portata fuori dal sito e cambia e viene eseguita (i file vengono modificati, aggiunti e cancellati). Quindi viene restituito alla mia macchina. Come posso facilmente integrare tutti questi cambiamenti in git.Sincronizza git workspace con un'altra cartella

Se dovessi solo copiare i file, i file nuovi e modificati andrebbero bene ma le informazioni sui file rimossi andrebbero perse. C'è un modo per fare facilmente git rm su file che sono stati rimossi mentre la directory era fuori git?

risposta

4

È possibile utilizzare l'opzione del git command--work-tree:

cd /path/to/your/local/repo 
git --work-tree=/path/to/your/other/directory status 
git --work-tree=/path/to/your/other/directory add -A . 
git checkout . 

che rileverà nuovi, modificati e file rimossi.
L'ultimo comando è citato in Mike Lippert's answer, per sincronizzare il proprio albero di lavoro locale con l'indice appena aggiornato.

In questo modo, si sta confrontando:

  • contenuto di "another/directory" (a cui fa riferimento l'opzione --work-tree)
  • con l'indice della vostra repo corrente (dove si sta eseguendo git)
5

La risposta di VonC sembra la prima parte di ciò che desideri.

L'opzione --work-tree è descritto sul git(1) Manual Page

Tuttavia dopo l'esecuzione git --work-tree=/path/to/your/other/directory add -A . l'indice è diversa dalla directory locale (originale). Per fare in modo che la directory locale corrisponda all'indice (che contiene tutte le modifiche dalla directory offline) eseguire git checkout ..

git --work-tree=/path/to/your/other/directory add -A . 
git checkout . 
+0

+1. Buon punto Ho incluso anche il passaggio alla cassa nella mia risposta. – VonC

Problemi correlati