Come ripristinare la versione del file della diramazione principale di origine


425

Sono nel ramo principale del mio computer locale di un ramo principale clonato di un repository da un server remoto.

Ho aggiornato un file e voglio tornare alla versione originale dal ramo principale remoto.

Come posso fare questo?

Risposte:


874

Supponendo di non aver eseguito il commit del file o di averlo aggiunto all'indice, quindi:

git checkout -- filename

Supponendo di averlo aggiunto all'indice, ma non lo ha eseguito il commit, quindi:

git reset HEAD filename
git checkout -- filename

Supponendo di averlo commesso, quindi:

git checkout origin/master filename

Supponendo che tu voglia spazzare via tutti i commit dal tuo ramo (MOLTO DISTRUTTIVO):

git reset --hard origin/master

43
La tua terza opzione è molto diversa dalle tue prime due in quanto tocca tutti i file e non solo il file. Potresti evidenziarlo in modo più esplicito. Inoltre, perché non raccomandare git checkout HEAD filenamee git checkout origin/master filenameper le opzioni uno e due, sarebbe più coerente?
CB Bailey,

5
@CharlesBailey: ho aggiunto l' git checkout origin/master filenameopzione alla risposta di gahooa.
Frank,

2
@cilphex spazza via tutti i commit nel tuo ramo attuale
WattsInABox

1
Ho accidentalmente reimpostato il ramo A al di fuori del ramo B e ho dovuto ripristinare il ramo locale principale. git reset --hard masterda solo era la mia soluzione poiché non volevo raggiungere l'origine. Grazie.
Taco,

3
@gahooa Probabilmente dovrebbe essere git checkout - nome file, cosa succede se il file si chiama "master", si otterrebbe un comportamento che non era previsto.
user2602152

50

Ho affrontato lo stesso problema e mi sono imbattuto in questo thread ma il mio problema era upstream. Sotto il comando git ha funzionato per me.

Sintassi

git checkout {nome-remoto} / {ramo} - {file / path.js}

Esempio

git checkout a monte / sviluppo - public / js / index.js


0

Se non lo hai ancora assegnato al ramo principale, è facile:

  • scendere dal ramo principale (come git checkout -b oops/fluke/dang)
  • commetti le tue modifiche lì (come git add -u; git commit;)
  • tornare al ramo principale (come git checkout master)

Le modifiche verranno salvate in branch oops / fluke / dang; il maestro sarà com'era.

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.