Com combinar els vostres últims N Git Commits

Com combinar els vostres últims N Git Commits
Com combinar els vostres últims N Git Commits

Dominar Commit Squashing a Git:

Quan treballeu en un projecte, el vostre historial de commits es pot omplir de nombrosos commits petits. Aquestes commissions menors poden dificultar la revisió dels canvis i la comprensió de l'historial del projecte.

A Git, podeu aixafar els vostres últims N commits en un sol commit, creant un historial més net i més manejable. Aquesta guia us guiarà a través dels passos per aconseguir-ho, fent que el vostre control de versions sigui més eficient.

Comandament Descripció
git rebase -i HEAD~N Inicia una rebase interactiva dels darrers N commits.
pick Manté una confirmació tal com està durant una rebase interactiva.
squash Combina una confirmació amb l'anterior durant una rebase interactiva.
sed -i '1!s/pick/squash/' .git/rebase-merge/git-rebase-todo Substitueix automàticament "pick" per "squash" per a tots excepte el primer commit de la llista de tasques de rebase.
git rebase --continue Continua el procés de rebase després de resoldre els conflictes.
git rebase --abort Avorta el procés de rebase i torna a l'estat abans de començar la rebase.
HEAD~N Es refereix al commit N llocs abans del HEAD actual.

Comprendre Git Commit Squashing

El primer script utilitza git rebase -i HEAD~N per iniciar una rebase interactiva dels darrers N commits. A la pantalla interactiva, substituïu "pick" per "squash" per als commits que voleu combinar. Aquest procés ajuda a consolidar diversos commits més petits en un, fent que el vostre historial de commits sigui més net i més fàcil de gestionar. Després d'editar, deseu i tanqueu l'editor. Si hi ha conflictes, els resoleu i continueu git rebase --continue.

El segon script és un script Bash que automatitza el procés d'aixafar. Comença comprovant si es proporciona un nombre de commits (N). Després, corre git rebase -i HEAD~N i usos sed per substituir "pick" per "squash" per a tots menys el primer commit de la llista de tasques de rebase. Això fa que sigui més fàcil esborrar múltiples commits sense editar manualment el fitxer. Finalment, continua el procés de rebase amb git rebase --continue, gestionant automàticament les resolucions de conflictes necessàries.

Squash múltiples commits en un amb Git Rebase

Ordres Git

git rebase -i HEAD~N
# Replace N with the number of commits you want to squash
# In the interactive rebase screen that appears, change 'pick' to 'squash' (or 's') for the commits you want to squash
# Save and close the editor
# Edit the commit message if needed, then save and close the editor again
# If there are conflicts, resolve them and then run
git rebase --continue
# Your last N commits are now squashed into one commit

Automatització del commit esquashing amb un script de Shell

Bash Script

#!/bin/bash
if [ -z "$1" ]
then
  echo "Usage: ./squash_commits.sh <N>"
  exit 1
fi
git rebase -i HEAD~$1
# Automatically replace 'pick' with 'squash' for all but the first commit
sed -i '1!s/pick/squash/' .git/rebase-merge/git-rebase-todo
git rebase --continue

Tècniques avançades de Git Squashing

Un altre aspecte important de l'eliminació de commits a Git és gestionar els conflictes de combinació que poden sorgir durant el procés. Quan es combinen diverses commits, els canvis de diferents commits poden entrar en conflicte entre si. Per resoldre aquests conflictes, Git proporciona ordres com ara git status per veure quins fitxers estan en conflicte i git add per marcar-los com a resolts. Després de resoldre els conflictes, continueu amb la rebase git rebase --continue.

També és útil saber com avortar una rebase si les coses van malament. La comanda git rebase --abort atura el procés de rebase i torna el repositori al seu estat anterior abans que comencés la rebase. Això garanteix que podeu desfer amb seguretat qualsevol canvi realitzat durant el procés de rebase. Entendre aquestes ordres pot millorar significativament la vostra capacitat per gestionar històries complexes de Git de manera eficient.

Preguntes freqüents sobre Git Commit Squashing

  1. Què vol dir aixafar commits?
  2. L'eliminació de commits significa combinar diversos commits en un únic commit per simplificar l'historial de commits.
  3. Per què he d'esquaixar els compromisos?
  4. L'eliminació de commits pot fer que l'historial del vostre projecte sigui més net i més fàcil de llegir, sobretot quan s'utilitzen molts commits petits.
  5. Com començo una rebase interactiva?
  6. Utilitzeu l'ordre git rebase -i HEAD~N, substituint N pel nombre de commits que voleu aixafar.
  7. Què signifiquen "pick" i "esquash" a la rebase interactiva?
  8. "Pick" manté una confirmació tal com està, mentre que "esquash" la combina amb la confirmació anterior.
  9. Com puc resoldre els conflictes durant una rebase?
  10. Ús git status per identificar conflictes, resoldre'ls manualment i després utilitzar git add i git rebase --continue.
  11. Puc avortar una rebase si alguna cosa va malament?
  12. Sí, pots utilitzar git rebase --abort per aturar la rebase i tornar a l'estat anterior.
  13. Quin és l'avantatge d'utilitzar un script Bash per esborrar les confirmacions?
  14. Un script Bash automatitza el procés, estalviant temps i reduint el risc d'errors manuals.
  15. Hi ha alguna manera d'esborrar automàticament les confirmacions en una rebase?
  16. Sí, utilitzant un script per modificar la llista de tasques de rebase sed, podeu canviar automàticament "pick" per "squash".

Embolcall de Git Commit Squashing

L'eliminació de commits a Git és una tècnica potent per mantenir un historial de projecte net i llegible. Tant si utilitzeu una rebase interactiva com si s'automatitza amb un script Bash, podeu combinar diversos commits en un de sol, fent que el registre sigui més fàcil de gestionar. Entendre com resoldre conflictes i avortar una rebase augmenta la vostra competència en Git, assegurant-vos que podeu gestionar qualsevol problema que sorgeixi. Dominar aquestes ordres i mètodes millorarà significativament les vostres pràctiques de control de versions.