2012-06-25 23 views
11

Sono in una transizione da SVN a GIT e ho una domanda per la quale non riesco a trovare una risposta. Descriverò il solito scenario quando lavoro con alcuni progetti open source via SVN.Ripristina il file cancellato dal repository

  1. fare una cassa
  2. inizio fare in giro con i file, apportare modifiche, per verificare come funziona il progetto.
  3. dopo p.2 alcuni file sono pesantemente modificati e non ho alcuna possibilità di tornare allo stato originale.
  4. Elimina i file modificati dal disco "rm nomefile.cpp", eseguo il comando "svn update" e voilà, tutti i file originali sono tornati.

Tutto questo funziona anche con GIT, eccetto p.4. Provo a fare "git pull" che dice che il progetto è aggiornato e non ottengo i file originali anche se mancano dalla cartella locale.

Qual è il comando corretto per p.4 quando si lavora con git. Thx

+1

possibile duplicato di [Come faccio a ripristinare i file a stati precedenti in git?] (http://stackoverflow.com/questions/35284/how-do-i-restore-files-to-previous-states-in-git) –

risposta

10

Cercate di checkout il ramo corrente (o HEAD):

git checkout HEAD 

Oppure, se si desidera ripristinare tutto l'ultimo stato commited (avvertimento: questo modo si eliminano definitivamente tutte le modifiche uncommited !), è anche possibile ripristinare difficile:

git reset --hard 
+0

Nessuno di questo sta lavorando.Elimino alcuni file, dopo che ho fatto il checkout, dice che alcuni file hanno D flag, non succede nient'altro. Se faccio reset, dice che c'è una richiesta apull che non ho bisogno e ancora non succede nient'altro. Se faccio pull, dice che i file sono aggiornati, ma i file cancellati sono ancora mancanti. – Eugen

+0

Siamo spiacenti, sembra che reset --hard sta funzionando correttamente. Thx – Eugen

10

il modo più semplice è indicato nella produzione di git status:

git checkout -- file 

dove il file può essere il nome di un file cancellato. Ciò ripristinerà il file cancellato senza interessare altri file.

+0

bene, ma cosa fare se ci sono 10 file che voglio ripristinare e non ricordo i loro nomi? – Eugen

+0

'git status' ti dirà il nome di ogni file modificato/cancellato – madth3

+1

Inoltre, se hai cancellato una cartella, permetti di dire/src/test, e supponiamo che ci siano molti file sotto di esso, anche allora puoi ripristinarli semplicemente eseguendo il seguente comando: git checkout - src/test – user204069

0

Git è terribile in questo caso, e ho lottato con così tanto che è incredibile. Ecco il modo in cui lo faccio:

  1. Clone repo a distanza in un luogo sul vostro HD locale diverso da dove avete il vostro repo locale esistente
  2. Copiare i file cancellati/directory dal repo appena clonato a il repo locale esistente
  3. le modifiche al tuo repo locale esistente, se necessario spingere anche il repo remoto
  4. Eliminare la nuova clonato repo locale

Perché shoul d essere questo complicato e richiede tempo per ottenere un compito così semplice fatto mi sfugge ...

0

Questo è quello che vorrei fare:

git reset HEAD <file-path> git checkout -- <file-path>

Problemi correlati