2009-11-03 11 views
24

Quando si utilizza Git con TortoiseGit: qualcuno sa come ripristinare un singolo file (o un repository completo) a una revisione precedente?Git (TortoiseGit) - Come ripristinare un singolo file in una revisione precedente e annullare il ripristino?

Ad esempio, ho un repository contenente più file. Un file esiste in tre revisioni (1; 2; 3). Ora voglio passare da versione 3 a 2.

TortoiseGit offre una funzione "Ripristina" nella finestra di dialogo "Mostra registro" che consente di tornare a una revisione specifica, ma questo ripristinerà l'intero repository anziché un file singolo.

Inoltre, una volta ripristinato qualcosa, non ho idea di come annullare il ripristino e tornare alla versione più recente.

risposta

14

Dalla riga di comando: git checkout è probabilmente quello che desideri.

La documentazione mostra un esempio di:

$ git checkout master~2 Makefile

per tornare Makefile a due revisioni indietro nel ramo principale

Dall'interno TortoiseGit (tramite Windows Explorer) sembra che si può fare questo con i passaggi seguenti:

  • Spostarsi in Explorer nella cartella in cui si trova il file.
  • pulsante destro del mouse sul file che si desidera ripristinare, scegliete Show log dal menu contestuale TortoiseGit
  • Nella sezione superiore ("grafico") selezionare la revisione con la versione del file che si desidera ripristinare
  • Nella terza sezione (elenco dei file) fare clic destro sul file e scegliere Revert to this revision
  • si dovrebbe ottenere un messaggio del tipo 1 files revert to e19a77
  • +2

    Sì hai ragione, questo funziona perfettamente con gli strumenti della riga di comando git, ma sto cercando la funzionalità corrispondente in TortoiseGit che utilizza anche strumenti da riga di comando git in background. – Alexander

    +0

    Sembra impossibile con la versione corrente di TortoiseGit. – Alexander

    +3

    Penso di aver capito questo con TortoiseGit, vedere la risposta modificata. – mlibby

    18

    Nel TortoiseGit la risposta è quella di fare clic destro sulla cartella del progetto e fare clic su Mostra registro, quindi fare clic con il tasto destro del mouse sulla modifica che si desidera ripristinare e cl ick Switch/Checkout a questo .... Ti permetterà quindi di procedere da quella strana posizione nella pila di commit, o ramo nel caso in cui pianifichi di impegnarti e vuoi che le cose restino equilibrate.

    +1

    Penso che cambierà tutto il progetto – quangkid

    6

    aggiornato la mia risposta, in base a queste osservazioni:


    Supponiamo che l'albero di lavoro è pulito e si desidera:

    1. Checkout qualche file (s) della sua revisione precedente
    2. Testing
    3. Ripristinare la revisione attuale

    1. Checkout qualche file (s) della sua revisione precedente

      (a) Fare clic destro sul file che si desidera ripristinare e Mostra registro per quel file

      enter image description here

      (b) Fare clic con il pulsante destro del mouse sul file nell'elenco dei file ed eseguire Ripristinare la revisione genitore

      enter image description here

      enter image description here

      (c) ripetizione (a), (b) fino ad ottenere tutti i file che si desidera.

      enter image description here

    2. Testing

    3. Ripristina versione corrente

      (a) eseguire Revert ... nel menu contestuale di Explorer

      In questo modo, è possibile scegliere la file (s) che si desidera ripristinare.

      (b) o in questo modo rapido: eseguire Hard Reset nella finestra

      In questo modo Log, tutti i file modificati ritornano. (=> Perso tutte le modifiche dir lavorativi)

      enter image description here

      enter image description here

    (provata su TortoiseGit 1.8.16.1, 2.6.4.windows GfW.1, Win 10 a 64 bit)

    +0

    Questo non è corretto. Quale versione di TortoiseGit è questa? Non penso che "Revert to parent revision" sia ancora presente. Il ripristino serve a distruggere le modifiche locali dello spazio di lavoro. La domanda qui è chiedere di tornare a una versione precedente e tornare alla versione corrente in seguito, non distruggere la versione corrente. –

    +0

    La funzione di Reverse sta ancora facendo qualcosa di diverso da ciò che il richiedente stava cercando. –

    4

    E 'anche possibile ottenere un file specifico:

    • pulsante destro del mouse sul file
    • scegliere la voce di menu: Git Mostra registro

    TortoiseGit mostra una finestra di dialogo con un elenco di tutte le revisioni

    • Fare clic sulla revisione precedente (2)

    In un elenco nella parte inferiore della finestra di dialogo che mostra tutti i file associati al impegnano

    • Trova il file che si sta cercando di visualizzare
    • fare clic destro su quel file e Salva revisione
    • Ciò fermo restando che precedente revisione del file con il numero di commit concatenati sul file

    Ad esempio: - file originale è il file .txt - revisione 2 salverà come file 67b51a8.txt

    sto usando TortoiseGit v2.2.0.0

    +0

    Questa è la migliore risposta! le altre risposte sono probabilmente per versioni precedenti di TortoiseGit prima che aggiungessero questa funzionalità. – Justin

    0

    Per Tortoise Versione 2.3.0:

    lo si può fare in diversi modi , ma più veloce che penso è che:

    1. fare clic destro sul file
    2. Fare clic sul menu "Diff con la versione precedente"
    3. Fare clic destro sul a sinistra la versione (precedente) del file
    4. Clicca l'opzione di menu "Usa l'intero file"
    5. Salvare le modifiche (ctrl + s)
    Problemi correlati