Mantieni pulita la cronologia del tuo repository Git eliminando i commit

Stanco di storie di commit disordinate che ingombrano i repository Git e le richieste pull? Fortunatamente, Git ha la capacità di “schiacciare i commit,” che unisce più piccoli commit in uno. Questo aiuta a mantenere la cronologia del codice pulita e organizzata, ed è facile da fare con pochi comandi.

Perché Squash si impegna?

Una delle regole d'oro della buona etichetta Git è quella di impegnarsi spesso con buoni messaggi che spiegano cosa fanno i commit. Tuttavia, questo può rapidamente diventare un problema se vengono inviati troppi commit. Dopotutto, nessuno vuole rivedere una richiesta pull con 40 diversi commit, tutti pronti per essere uniti nel master: è semplicemente troppa confusione.

Quindi, prima di passare a un repository remoto come GitHub, è buona norma schiacciare quei commit, che li uniranno tutti in un unico grande commit. Tutti i messaggi di commit di tali commit verranno aggiunti al messaggio “squash commit” in modo che siano ancora tutti visibili quando li invii a GitHub o invii la tua richiesta pull.

Inoltre, non è sempre necessario schiacciare ogni commit, poiché a volte è utile dividere le cose up se stai lavorando su più file o parti diverse del repository. Tuttavia, se stai solo apportando più modifiche a un singolo file nel tempo, probabilmente dovresti eliminare quei commit.

È importante notare che non puoi già eliminare i commit inviato a GitHubsenza forzare la spinta, che è un'operazione distruttiva. Lo schiacciamento dei commit sovrascrive la cronologia di Git, il che va bene se lo stai facendo solo sul tuo computer locale. Se lo stai facendo su GitHub, richiede un push forzato, il che significa che tutti i membri del tuo team devono clonare nuovamente il repository per evitare conflitti.

Per evitare questi problemi, è necessario eseguire nuovamente la clonazione del repository. È meglio schiacciare i commit prima di eseguire il push al repository remoto. Dato che di solito questo è il momento in cui vorresti farlo comunque, di solito non è un problema.

Squashing Git Commits con git merge

Ci sono un paio di modi diversi per schiacciare i commit, dato che non esiste un &#8220 ufficiale ;git squash” comando. Uno dei più semplici è usare git merge con il flag –squash. Questa tecnica unirà gli ultimi N commit insieme in uno solo.

Innanzitutto, assicurati che il tuo repository sia completamente pulito, senza modifiche attive. Puoi controllare lo stato di git per verificare che non ci siano modifiche locali che verrebbero eliminate dal ripristino.

Successivamente, vorrai reimpostare il ramo nella posizione in cui si trovava prima di qualsiasi i commit che vorresti schiacciare insieme. Ad esempio, per schiacciare gli ultimi tre commit, dovresti usare HEAD~3, che è tecnicamente il quarto commit nella cronologia, ma rimuoverà tutti e tre i commit eliminabili dalla cronologia.

git reset –hard HEAD~3

Puoi anche utilizzare un hash SHA-1 di commit per fare riferimento direttamente a un commit. Successivamente, eseguiamo git merge –squash, con la destinazione dell'unione HEAD@{1}, che è la posizione di HEAD prima dell'ultimo comando.

git merge –squash 'HEAD@{1}' < p>Git ha già messo in scena tutte le modifiche con il messaggio di commit appropriato a questo punto, ma deve essere eseguito il commit:

git commit

Una volta fatto, sei libero di inviare tutti i commit al tuo repository sorgente upstream.

Più controllo sullo schiacciamento con il rebase interattivo

Se non vuoi schiacciare tutto in un bit di commit, puoi eseguire un rebase interattivo per selezionare solo i commit che vuoi schiacciare. Il rebase può essere complicato, ma è facile da eseguire con i passaggi giusti.

Per prima cosa, avvia il rebase interattivo indirizzando il commit prima dell'ultimo commit squashable:

git rebase -i TESTA~3

Questo aprirà un editor di testo, dove vorrai cambiare “pick” “schiacciare” per ogni commit che desideri unire.

Git aprirà quindi un altro editor, permettendoti di creare un nuovo messaggio di commit per il commit combinato. Salva questo, e il rebase dovrebbe finire.

Rebase in questo modo unirà tutti i commit schiacciati nel commit successivo sopra di essi. In questo caso, il secondo e il terzo commit sono stati uniti nel primo.

Schiacciare i commit di Git con una GUI di Git

Come la maggior parte delle azioni in Git, schiacciare i commit con un'interfaccia è molto più facile che ricordare e digitare i comandi ogni volta. Infatti, in GitKraken, puoi semplicemente fare clic tenendo premuto il tasto Ctrl sui commit che desideri schiacciare e fare clic con il pulsante destro del mouse per premere “Squash 2 commits”:

Puoi leggere la nostra guida sui client GUI Git per saperne di più.

RELAZIONATO: Dovresti usare un client Git GUI?

LEGGI SUCCESSIVO

  • › Come utilizzare e personalizzare la tastiera virtuale sul tuo deck di Steam
  • › Le batterie rimovibili per smartphone potrebbero tornare alla ribalta
  • › 7 motivi per cui dovresti eliminare l'illuminazione RGB dalla tua configurazione di gioco
  • › Come silenziare le chiamate da numeri sconosciuti su WhatsApp
  • › VMware porta Windows 11 con accelerazione 3D sui Mac Apple Silicon
  • › Il trackpad del Mac non funziona? 10 suggerimenti e trucchi da provare

Posted

in

by

Tags: