Com combinar els vostres últims N Git Commits

Git Commands

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 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 .

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 i usos 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 , 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 per veure quins fitxers estan en conflicte i per marcar-los com a resolts. Després de resoldre els conflictes, continueu amb la rebase .

També és útil saber com avortar una rebase si les coses van malament. La comanda 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.

  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 , 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 per identificar conflictes, resoldre'ls manualment i després utilitzar i .
  11. Puc avortar una rebase si alguna cosa va malament?
  12. Sí, pots utilitzar 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 , 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.