2012-02-11 13 views
14

Sono abbastanza nuovo per git e controllo di versione in generale, e ho domande su come spostare i file. Ho un master repo su GitHub, con 6 file sorgente.Git Moving Files in Folders

Ho lavorato molto al progetto e ora il mio ramo locale contiene due cartelle con le fonti in quelle.

La struttura di directory utilizzata per essere come:

Master:

  • File 1
  • File 2
  • File 3
  • File 4
  • File 5
  • File 6

Dove come il mio filiale locale ora assomiglia a questo:

Nuova cartella 1:

  • Nuovo file 1
  • Nuovo file 2
  • Nuovo file 3

Nuovo Cartella 2:

  • File 1
  • File 2
  • File 3
  • File 4
  • File 5
  • File 6

Come posso spostare la mia struttura locale al ramo principale senza perdere la mia memorizzare la cronologia sui vecchi file?

risposta

11

Basta eseguire il commit. La colpa di Git ecc in genere fa un buon lavoro nel rilevare automaticamente le mosse.

7

git in realtà non tiene traccia delle "mosse" di file, lo deduce a richiesta da contenuti simili. Quindi, basta fare la mossa e aggiungere/rimuovere file come appropriato. (In futuro, semplificheresti la vita agli strumenti se evitassi di apportare modifiche al contenuto e li spostassi in un unico commit.)

Quindi, per vedere il conto che conta gli spostamenti, utilizzare -M, -C o le loro varianti a git log. Bandiere simili si applicano ad altri strumenti e dovresti leggere l'aiuto per capire i dettagli di ciò che fanno.

Se si utilizza git mv su un file, fa semplicemente il git rm e git add per voi.

+0

altri lo spiegano a fatica il mv fa tutto ciò di cui hai bisogno. Creare la cartella in mv in primo luogo per comodità – doozMen

4

Gli altri poster sono corretti, tuttavia se si desidera confermare che git vedrà questi come mosse (e non una combinazione di delete/create), eseguire un git status.Si dovrebbe vedere:

# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# renamed: oldfile.txt -> newFolder/newfile.txt 
+8

Se git vede la mossa come una combinazione di delete/create, cosa fare allora? – Gauthier

+1

Fase rimuovere i file dalla cartella precedente, quindi mettere in scena l'aggiunta di file in una nuova cartella - molto probabilmente git vedere questo come rinominare. – Serg

0

In github, se non si dispone di troppi file per spostarsi, un'interessante alternativa è quello di modificare il file, e cambiare il suo nome a:

folder_to_move_into/file_name 

Quando si commit, il file viene spostato nella cartella. Se la cartella non esiste, verrà creata.