Casa Studia Come ripristinare singoli file e cartelle in Git

Come ripristinare singoli file e cartelle in Git

di Frank
Come ripristinare singoli file e cartelle in Git

introduzione

Git è uno strumento eccellente per mantenere ogni versione della tua base di codice e talvolta è necessario tornare indietro nel tempo e ripristinare versioni precedenti dei file. Git può ripristinare le modifiche a un singolo file o cartella, nonché ritirare i commit completi o ripristinare l'intero repository.

Scelta tra ripristino e ripristino

Quando "ripristina" un commit, Git di solito applica un nuovo commit con le modifiche opposte, essenzialmente annullandolo. Questo è utile se commetti un errore e devi "rimuovere" un commit anche se rimane nella cronologia.

La procedura per reimpostare il repository è leggermente diversa. Puoi ritirare solo un commit alla volta, ma se esegui un ripristino git, Git ripristinerà completamente il repository su quando è stato creato quel commit. Questo viene fatto per una serie di motivi, il più comune dei quali è cancellare i commit o correggere la cronologia del ramo.

Entrambe queste procedure influiscono sull'intero repository, ma è possibile utilizzare comandi identici per ottenere gli stessi effetti su singoli file o cartelle. Ad esempio, eseguendo git reset su un singolo file lo ripristinerebbe allo stato in cui si trovava quando è stato creato il commit. Questo è utile se vuoi semplicemente scegliere una versione precedente del file dalla cronologia di Git.

Esame delle vecchie versioni Git

The low-tech approach to restoring a file to its original state is rather simple—Github and most other Git servers maintain track of your file history, and you can simply click on a commit and choose “Browse Files” to see a snapshot of your repository from the past. You may then either scarica il file oppure copia il testo.

Questo è particolarmente utile se stai lavorando con un gran numero di file di codice e vuoi confrontare le versioni precedenti delle routine che hai scritto. In quello scenario, probabilmente non vuoi invertire l'intera cosa, solo una funzione. Senza toccare la CLI di Git, puoi copiare il codice da quella funzione.

Ripristino di un file Git a una versione precedente

Abbiamo effettuato un commit in questo repository di test che ha modificato il README e aggiunto un nuovo file. Vogliamo annullare le modifiche README, ma non vogliamo ripristinare l'intero repository al primo commit.

La risposta è ripristinare solo il README scaricando una versione precedente di quel file. Il comando di checkout di Git può eseguire una varietà di cose, come cambiare branch, sebbene sia spesso usato per scaricare dati in base a un commit o un branch ID.

Per ripristinare un file a una versione precedente, individua l'ID commit da quando desideri ripristinarlo. Puoi usare git log con un singolo file con ambito per vedere solo le modifiche apportate a quel file:

git log README.md

Copia l'ID commit, quindi esegui git checkout con l'ID e il percorso del file:

git checkout 22710694b25d7ce5297559851beb7d3e4de811bb README.md

Ciò modificherà nuovamente il file, ma non eseguirà ancora il commit delle modifiche. Sei libero di apportare modifiche e impegnarti quando sei pronto.

In questo caso, git checkout ha contrassegnato le modifiche come pronte per il prossimo commit. Se non desideri eseguire il commit delle modifiche, puoi farlo. Questo potrebbe essere utile per scaricare temporaneamente versioni precedenti di file senza utilizzare Github.

Ripristino delle modifiche ai singoli file

Allo stesso modo, puoi usare git revert per annullare le modifiche apportate in un singolo commit. Non c'è modo di applicarlo a un singolo file, tuttavia se il commit ha un impatto su altri file, rifiuta semplicemente le modifiche.

Use the —no-commit switch to enable modification of the “revert commit” that Git generates automatically.

git revert de8564b131ca6a15a7e7c73f5ef156b119cc0b93

Ciò consente di apportare modifiche ai file prima di completare lo storno. Se ci sono modifiche indesiderate che sono state messe in scena, puoi cancellarle usando il tuo client o un checkout git vuoto.

git checkout -- file

Potrebbe piacerti anche

Navhow è dedicato a insegnare alle persone di tutto il mondo come fare qualsiasi cosa.

 

sottoscrivi

La migliore newsletter di istruzioni ovunque

©2022 Navhow, Tutti i diritti riservati