2012-02-15 12 views
10

Voglio in qualche modo modificare la struttura della directory git. Attualmente l'architettura è comecambiando la struttura git

VL(repo)  
    .git (hidden)  
    code files  
    ......  
    ..... 

I want it like 

html(repo) 
    .git 
    VL 
     code files 
     ...... 
     ...... 

ho avuto una soluzione per archiviare il repo corrente e quindi creare il nuovo pronti contro termine con la struttura di cui sopra. Ma la cosa brutta di questo approccio è che rimuove tutta la cronologia precedente. c'è una soluzione migliore?

risposta

19

Cambiare il nome della cartella radice da VL a html non è un problema dato che git funziona solo sulle directory al di sotto di quel livello.

Quindi, ciò che resta è l'introduzione della cartella VL sotto la cartella html e spostare tutti code files lì:

mkdir VL 
git mv <all your code> VL 
git commit -m "moved all my code under VL" 

Utilizzando git mv dici git che si è spostato le cose, in modo che possa ancora tenere traccia della storia.


Edit:
Come Benjol nota nel suo commento, utilizzando git mv non è necessario. Si potrebbe ottenere lo stesso copiando <all your code>-VL, poi fare

  • git add VL
  • git rm <all your code>
  • git commit -m "moved all my code under VL

git è abbastanza intelligente da riconoscere il movimento.

+0

Anche se non si utilizza 'git mv', git dovrebbe rilevare il fatto che i file sono stati spostati e non modificati. – Benjol

+0

@ Benjol: sì, certo che hai ragione. Volevo solo dare l'informazione a OP che c'è un comando incorporato per il suo caso d'uso. Aggiornamento della risposta. Grazie. – eckes

+0

Si noti che la cronologia sarà accessibile attraverso la modifica con "git log --follow", ma funziona solo per i singoli file. – yoyo

2

Sposta il codice manualmente. Quindi,

git add -A 
git commit -m "moved code" 

Fatto.

Problemi correlati