Git: ho cancellato alcuni file localmente, come posso ottenerli da un repository remoto


110

Ho cancellato alcuni file sul mio PC, come posso scaricarli di nuovo?

Pull dice: "Già aggiornato".


1
Non è necessario "scaricarli di nuovo", perché tutta la cronologia del repository esiste localmente quando si utilizza Git.
cdhowie

sai come ottenerli dal locale?
Charlie Parker

Risposte:


164

Poiché git è un VCS distribuito, il tuo repository locale contiene tutte le informazioni. Nessun download è necessario; devi solo estrarre il contenuto che desideri dal repository a portata di mano.

Se non hai eseguito il commit dell'eliminazione, controlla i file dal commit corrente:

git checkout HEAD <path>

Se hai eseguito il commit dell'eliminazione, devi estrarre i file da un commit che li ha. Presumibilmente sarebbe il commit precedente:

git checkout HEAD^ <path>

ma se nfa commit, usa HEAD~no semplicemente avvia gitk, trova lo SHA1 del commit appropriato e incollalo.


2
proprio come commento laterale, funziona anche per una directory completa, non è speciale o specifico per un singolo file (ha funzionato almeno quando l'ho provato). Thnx btw.
Charlie Parker,

5
NB <path>è obbligatorio, anche se solo il .punto per la dir corrente. Ma il "ramo" ( HEADnell'esempio sopra) è facoltativo. Come con tanti comandi Git, né l'output né l'aiuto sono utili.
MarkHu

39

git checkout filename

git reset --hard potrebbe fare anche il trucco


9
avvertendo però nell'usare il git reset --hardmetodo in quanto ciò ripristinerà l'intero albero nella posizione in cui metti HEAD / HEAD ^ / HEAD ~ ne lo farà senza pregiudizi e potenzialmente perderà molti commit ...
g19fanatic

git checkout filename è stata la risposta per me :)
Ruub

git checkout filename crea solo un file vuoto
mrek

inserito nella cartella desiderata e ha git checkount .funzionato a meraviglia!
hzitoun

21

Se hai eliminato più file localmente ma non hai eseguito il commit, puoi forzare il checkout

$ git checkout -f HEAD

Come si vede dall'output "Già aggiornato", la persona che pone questa domanda non ha commesso nulla ultimamente. Dovresti forse specificare che git checkout -f HEAD is DANGEROUS? In quanto potrebbe annullare le modifiche locali che non sono state impegnate (il ripristino dei file precedenti è il risultato positivo, la perdita delle modifiche sui file modificati quello negativo).
Lionel Trebuchon

15

Se hai eliminato più file localmente e non hai eseguito il commit delle modifiche, vai al percorso del tuo repository locale, apri la shell git e digita.

$ git checkout HEAD .

Tutti i file eliminati prima dell'ultimo commit verranno ripristinati.

Aggiunta di "." ripristinerà tutti i file eliminati nel repository corrente, nei rispettivi percorsi.

Per maggiori dettagli controlla la documentazione .


2

È necessario controllare una versione precedente prima di eliminare i file. Prova git checkout HEAD^a controllare l'ultima revisione.


0

Inoltre, aggiungo di eseguire i seguenti passaggi in modo che il repository git sia collegato correttamente con l'IDE:

 $ git reset <commit #>

 $ git checkout <file/path>

Spero che questo sia stato utile !!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.