Come ripristinare completamente un repository Git (compresi i file non tracciati)

0
55

I comandi Git sono complicati e spesso potresti trovarti a pensare,“al diavolo, 8217;comincerò da capo!” Fortunatamente, Git è costruito per tenere traccia di ogni versione delle tue modifiche e, se hai sbagliato, fornisce strumenti per ripristinare il tuo repository al suo vecchio stato di lavoro.

Salvataggio delle modifiche (Git Stash)

Prima di eseguire un comando per ripristinare il repository, assicurati di non perdere i dati che desideri salvare.

Git fornisce diversi tipi di reset. Le reimpostazioni soft e miste ripristineranno il repository allo stato in cui si trovava in un determinato commit (spesso l'HEAD di un ramo), ma manterranno le modifiche locali che non hai ancora eseguito il commit. Gli hard reset, d'altra parte, sono distruttivi e annulleranno le modifiche che non sono ancora state eseguite.

Spesso è necessario un hard reset per pulire correttamente il repository. Se vuoi, puoi “stoccare” le tue modifiche, che prenderanno tutte le modifiche non salvate e le memorizzeranno localmente. Puoi aprire la scorta con “applica scorta” in un secondo momento.

git stash git stash apply

Puoi anche creare un nuovo ramo, eseguire il commit delle modifiche e quindi ripristinare il master. Ciò manterrebbe le tue modifiche nella cronologia dei commit per sempre e potrebbe anche essere inviato al controllo del codice sorgente remoto per essere condiviso con i tuoi colleghi.

Esecuzione di un ripristino ( Git Reset)

Per prima cosa, devi recuperare lo stato più recente del repository remoto, solitamente “origine,” e poi controlla il ramo principale (o quello su cui stai reimpostando).

git fetch origin git checkout master Pubblicità

Puoi anche eseguire il checkout e reimpostare un singolo commit utilizzando il suo ID, ad esempio git checkout 342c47a4.

Quindi, esegui un hard reset (a meno che tu non voglia mantenere le modifiche con un soft reset). Tieni presente che questa operazione è distruttiva per qualsiasi modifica non salvata.

git reset –hard origin/master

Puoi reimpostare un commit locale invece di origin/master, ma la maggior parte di l'ora in cui tornerai allo stato del telecomando.

Reimpostazione dei file non tracciati (Git Clean)

Tuttavia, git reset di solito non è sufficiente. Il ripristino in Git ripristina solo i file effettivamente tracciati da Git. Ciò include codice e risorse che ricevono modifiche.

Tuttavia, ci sono anche file come pacchetti, configurazione locale, artefatti/output di build, file di registro e altri elementi transitori che non sono archiviati in Git repository (e ignorato in .gitignore). Per ripulirli e portare il tuo repository locale al 100% di parità con lo stato del telecomando, puoi eseguire git clean:

git clean -d –force Advertisement

Puoi effettivamente eseguire questo comando senza eseguire git reset, che potrebbe essere quello che desideri. Se non vuoi modificare i tuoi file di codice, ma vuoi ripulire build, log e pacchetti per ricominciare, git clean potrebbe essere tutto ciò di cui hai bisogno.

Rinunciare invece: clonare un nuovo repository

Mentre quanto sopra è il “modo pulito” per farlo con i comandi ufficiali di Git, eseguire un ripristino completo non è molto lontano dal distruggere semplicemente la cartella del repository locale e clonarne una nuova di zecca. Non c'è da vergognarsi nel farlo se si prevede di ripristinare tutto comunque:

sudo rm -r git-repository git clone https://github.com/user/git-repository.git cd git-repository

Tieni presente che questo può solo ripristinare lo stato del tuo repository remoto, non un commit locale. Questo clonerà il ramo principale per impostazione predefinita, ma puoi passare al ramo di tua scelta con git switch o clonarlo dall'inizio con git clone -b <nomebranch>.