Diferències de codi Git: explicació de les branques, els commits i les eines

Darrera actualització: 04/18/2026
  • Les diferències de Git descriuen canvis a nivell de línia entre commits, branques o fitxers, i constitueixen la base de la revisió de codi i l'anàlisi de l'historial.
  • Les comparacions de ramificacions, commits i etiquetes amb opcions com ara .., ... i els filtres de ruta permeten inspeccionar exactament què ha canviat i on.
  • Plataformes com GitHub i GitLab creen fluxos de treball de col·laboració (incidències, sol·licituds d'extracció i llançaments) sobre el motor de diferències de Git.
  • Comprendre el directori de treball, l'àrea de proves i les àrees del repositori és crucial per interpretar i utilitzar correctament les diferències de Git.

Diferències de codi Git

Quan treballes amb Git cada dia, entendre com inspeccionar les diferències de codi és absolutament essencial per evitar sorpreses desagradables quan fusiones, suprimeixes branques o publiques a producció. Comparar què ha canviat, qui ho ha canviat i on ha divergit et permet detectar errors aviat, revisar la feina còmodament i mantenir el repositori ordenat.

En aquesta guia, us explicarem pas a pas tot el que realment necessiteu saber sobre les diferències de codi Git.des del bàsic git diff ús d'opcions avançades com ara ignorar els espais en blanc, comparar branques i commits, generar pegats i fins i tot com tracta Git els fitxers binaris. També connectarem aquests conceptes amb els fluxos de treball de GitHub i GitLab, de manera que la imatge completa de Git vs GitHub vs GitLab i la col·laboració amb sol·licituds d'extracció esdevingui clara com l'aigua.

Què és realment Git i per què importen les diferències de codi

Git és un sistema de control de versions distribuït dissenyat per fer un seguiment de tots els canvis del vostre projecte al llarg del temps . A diferència dels sistemes centralitzats més antics, cada desenvolupador té una còpia completa del repositori, incloent-hi tots els commits, branques i etiquetes, directament a la seva màquina. Això vol dir que podeu explorar l'historial, crear noves branques, experimentar i comparar versions fins i tot sense connexió a Internet.

La idea central de Git són les instantànies del vostre projecte anomenades commits . Cada commit representa un estat específic de tots els fitxers rastrejats en un moment determinat i rep un hash únic (SHA-1 o el seu substitut modern) que l'identifica. Quan parleu de "diferències de codi a Git", realment us esteu referint a les diferències entre dues d'aquestes instantànies: dos commits, dues branques o el vostre directori de treball en comparació amb l'últim commit.

El model de ramificació de Git és el que fa que les diferències siguin tan potentsBranques (sovint anomenades feature, bugfix, main or master) són simplement punters a seqüències de commits. Podeu treballar en noves funcions o correccions de forma aïllada i, a continuació, utilitzar diffs per revisar exactament què ha canviat abans de tornar a fusionar aquestes branques a la línia principal.

Com que Git és distribuït, la col·laboració sol implicar repositoris locals i remots . Localment teniu el vostre repositori complet; remotament, normalment feu push a plataformes com GitHub o GitLab, que actuen com a centres centrals. La majoria dels fluxos de treball d'equip giren al voltant de la creació de branques, el commit de petits canvis lògics, la revisió de diferències mitjançant diffs i després la fusió mitjançant sol·licituds d'extracció o sol·licituds de fusió.

Diferència visual de git

Conceptes clau de Git darrere de les diferències de codi

Abans d'aprofundir en les ordres diff, necessiteu un model mental clar de les tres àrees principals de Git i habilitats del desenvolupador: directori de treball, àrea de proves i repositori. Aquest model explica què es compara exactament quan s'executa git diff.

El directori de treball és la carpeta del vostre ordinador on realment editeu els fitxers . Qualsevol fitxer que modifiqueu, creeu o suprimiu resideix aquí primer. Aquests canvis encara no formen part de l'historial de Git; són només edicions locals que poden acabar sent publicades o no.

L'àrea de preparació (també anomenada índex) és un buffer intermedi on prepareu els canvis per al següent commit.. Quan corre git add, esteu seleccionant quins fitxers modificats o fins i tot quins fragments d'un fitxer voleu incloure a la propera instantània. Les eines de diff de Git poden mostrar amb precisió què està en fase de preparació en comparació amb què queda només al directori de treball.

El repositori conté l'historial oficial: tots els commits, branques i etiquetes . Cada commit apunta a un arbre de fitxers que representen el contingut exacte en aquell moment. Quan compareu commits, branques o etiquetes, Git compara efectivament aquests arbres i ressalta les línies afegides, eliminades o modificades.

HEAD és un punter que indica a Git en quin commit i branca et trobes actualment.. La majoria de les vegades HEAD fa referència a l'últim commit de la branca activa. Quan extraieu directament un commit més antic en comptes d'una branca, entreu al conegut estat "detached HEAD": els diffs encara funcionen, però els nous commits no s'adjuntaran a una branca amb nom tret que en creeu una.

Llegint diferències en brut: com Git mostra els canvis de codi

En essència, Git representa les diferències mitjançant un format de text força compacte que inclou una introducció, metadades, marcadors que descriuen quines línies han canviat i els fragments de codi reals. Entendre aquesta estructura fa que la sortida de les diferències sigui molt menys intimidant al terminal.

La introducció d'una diferència explica què es comparaNormalment comença amb una línia com diff --git a/file.txt b/file.txt, seguit de línies de metadades que comencen per index or ---/+++Aquests indiquen quines versions de fitxer estan implicades, els seus hashes i si el fitxer s'ha afegit, modificat o suprimit.

Els marcadors de canvi anuncien quines línies dels fitxers original i nou s'inclouen a cada bloc.Semblen @@ -10,7 +10,9 @@Els números indiquen que el tros comença al voltant de la línia 10 del fitxer antic i la línia 10 del fitxer nou, amb 7 i 9 línies respectivament. Aquest context us ajuda a orientar-vos quan obriu el fitxer en un editor.

Dins de cada fragment, Git utilitza prefixos a cada línia per mostrar què ha passat.. Un líder - vol dir que la línia s'ha eliminat, + significa que s'ha afegit i un espai significa que no ha canviat el context inclòs per facilitar la lectura. En escanejar - i + línies una al costat de l'altra podeu deduir com ha evolucionat el codi entre les dues versions.

Per a fitxers binaris, Git no pot mostrar una diferència de text línia per línia significativa . En aquests casos, normalment veureu un avís que indica que el fitxer és binari juntament amb una indicació que ha canviat o un resum com ara "els fitxers binaris difereixen". Per a comparacions més detallades de binaris (imatges, recursos compilats, etc.), generalment us baseu en eines externes o visualitzadors especialitzats dins del vostre IDE.

Comparació de branques de Git

Ús de git diff per comparar codi

git diff és la principal navalla suïssa per inspeccionar les diferències de codi a GitL'ordre accepta una àmplia gamma d'arguments, de manera que podeu comparar canvis en funcionament, canvis en etapes, commits, branques o fins i tot fitxers entre diferents repositoris.

Si s'executa git diff sense arguments, Git mostra què ha canviat al directori de treball en comparació amb l'índexEn altres paraules, veieu totes les modificacions que encara no s'han posat en escena amb git addAixò és perfecte per a una ràpida comprovació de seguretat abans de decidir què incloure al vostre proper commit.

Per veure què està en fase però encara no compromès, feu servir git diff --cached (o --staged)Aquesta comparació és entre l'àrea de preparació i l'últim commit. Sovint és el pas de revisió final just abans d'executar-lo. git commit, ajudant-vos a confirmar que només esteu confirmant les línies previstes.

El Git també permet centrar les diferències en fitxers, directoris o rutes específiques.Afegint un camí després de --, com a git diff -- src/ or git diff main..feature -- path/to/file.py, limiteu la sortida només a aquestes parts del projecte. Això és molt útil en monorepositoris grans o quan es revisa un subsistema en particular.

Ignorar els canvis d'espai en blanc és un salvavides quan algú reformata el codi.. Opcions com --ignore-space-change or --ignore-all-space Digues a Git que tracti moltes edicions només amb espais en blanc com a irrellevants, de manera que puguis centrar-te en els canvis lògics en lloc del soroll dels ajustaments de sagnia o d'acoblament de línia.

Destacar els canvis amb més claredat

Les diferències estàndard de vegades poden ser massa gruixudes, especialment per a línies llargues . Afortunadament, Git inclou diverses millores per ressaltar els canvis de manera més granular, cosa que pot fer que les revisions siguin més ràpides i agradables a la vista.

Un truc popular és utilitzar git diff --color-wordsEn comptes de marcar línies senceres com a modificades, Git intentarà ressaltar només les paraules o els elements modificats dins d'aquestes línies. Això és particularment útil per a la documentació, els fitxers de configuració o les signatures de funcions llargues on només s'ha modificat una petita part.

Una altra opció potent és git diff-highlight, normalment instal·lat com a script de contribucióPostprocessa la sortida de diff i emfatitza visualment les seccions exactes de cada línia que s'han modificat. Combinat amb la compatibilitat amb el color al terminal, això pot oferir una experiència gairebé similar a la d'un IDE directament des de la línia d'ordres.

Molts IDE i editors de codi integren aquestes idees en visualitzadors gràfics de diff.Eines com ara Visual Studio Code, IntelliJ IDEA o la funció integrada gitk El client mostra comparacions paral·leles, ressaltats en línia i gràfics històrics, tot impulsat per les mateixes dades de diferències subjacents de Git.

Fins i tot en terminals plans podeu millorar la llegibilitat habilitant la sortida en color.. Configuració git config --global color.ui auto o utilitzant git diff --color fa que les addicions i eliminacions ressaltin amb diferents colors, reduint la càrrega cognitiva durant les revisions manuals.

Comparació de branques a Git

Un dels escenaris més comuns del món real és comparar dues branques per entendre què ha canviat abans de fusionar o suprimir-ne un. Git ofereix dues notacions principals per a això: doble punt (..) i triple punt (...), cadascun responent a una pregunta lleugerament diferent.

La sintaxi de doble punt branch1..branch2 compara directament les puntes de dues branques. Quan corre git diff branch1..branch2, Git mostra els canvis que s'aplicarien per anar de branch1 a branch2És com preguntar "què té la branca2 que no tingui la branca1?".

La sintaxi de tres punts branch1...branch2 compara cada branca amb el seu avantpassat comú. Amb git diff branch1...branch2, Git mostra què ha canviat branch2 des del punt on es va desviar de branch1Això és extremadament útil per a les branques de característiques perquè aïlla només la feina feta en aquesta branca.

També podeu fer servir git log branch1..branch2 per llistar els commits que són únics per a branch2. Aquesta és essencialment la versió històrica del diff que acabem de descriure: en comptes de canvis de línia, veieu la seqüència de commits que encara no s'han fusionat d'una branca a una altra.

Abans d'eliminar una branca, comprovar les diferències és una bona xarxa de seguretat.Executant un ràpid git log main..old-feature or git diff main..old-feature confirma si ja s'han fusionat tots els commits importants. Si el registre apareix buit, podeu eliminar amb confiança aquesta branca tant dels repositoris locals com dels remots.

Comparació de commits, fitxers i etiquetes

El diff de Git no es limita a les branques; podeu comparar dos commits, etiquetes o fins i tot referències arbitràries.. Totes les referències que Git entén (nom de la branca, etiqueta, hash de commit, HEAD~2, etc.) es poden connectar a l'ordre diff.

Per veure les diferències entre dos commits específics, simplement feu servir els seus identificadors.. Per exemple, git diff abc1234 def5678 imprimeix tots els canvis entre aquests dos punts de l'historial. Això és útil quan investigueu exactament què ha canviat al voltant d'una regressió o un problema de rendiment.

La comparació d'un sol fitxer entre branques o commits utilitza la mateixa sintaxi amb una ruta al final.Una ordre com git diff main..feature path/to/config.yml revela com ha evolucionat aquest fitxer de configuració a la branca de funcions sense el desordre de directoris no relacionats.

Les etiquetes a Git són referències fixes, normalment utilitzades per a llançaments o fites importants.. Córrer git diff v1.0.0 v1.1.0 mostra totes les modificacions de codi entre aquestes dues versions publicades. Aquesta és una manera excel·lent de redactar notes de llançament o entendre l'abast dels canvis introduïts en una nova versió.

De vegades, un breu resum és suficient, i és aquí on... --stat l'opció brilla. git diff --stat main..feature imprimeix una taula compacta per fitxer amb el nombre d'insercions i eliminacions, cosa que permet avaluar la mida d'un conjunt de canvis d'un cop d'ull sense haver de desplaçar-se per fragments sencers.

Diferències i limitacions dels fitxers binaris

Pel que fa als binaris, Git es comporta de manera diferent perquè no pot fer comparacions significatives basades en línies . Per exemple, els fitxers d'imatge, els vídeos o els executables compilats no tenen línies textuals en el sentit normal, de manera que el format clàssic de diff unificat no tindria sentit.

Per defecte, Git simplement us indicarà que els fitxers binaris són diferents cada vegada que un objecte binari canvia entre dues revisions. La sortida pot ser tan simple com un missatge d'una sola línia en lloc dels fragments habituals, que indica que el contingut s'ha actualitzat sense intentar mostrar els detalls exactes a nivell de byte.

Per als equips que treballen sovint amb binaris, les eines externes sovint s'integren al flux de treball . Els visualitzadors de diferències gràfiques, les utilitats de comparació d'imatges o els complements especialitzats us poden ajudar a veure els canvis visuals (per exemple, en els recursos de disseny) mentre que Git encara gestiona les versions i l'historial en segon pla.

Tot i que les diferències d'estil textual són limitades per als binaris, Git encara fa un seguiment de l'historial complet d'aquests fitxers . Podeu tornar a versions anteriors, comparar mides de fitxers al llarg del temps o generar pegats que incloguin canvis binaris, però la inspecció precisa es fa fora de la visualització habitual de les diferències a la línia d'ordres.

Visualitzant les diferències i la història

De vegades, la sortida en brut del terminal no és la manera més intuïtiva d'entendre canvis complexos , especialment en repositoris grans amb molts col·laboradors. L'ecosistema de Git proporciona diverses eines per visualitzar les diferències i l'historial amb més claredat.

gitk és una GUI clàssica inclosa amb Git que dibuixa un historial gràfic de commitsPodeu veure les branques com a línies de colors, explorar els punts de fusió i fer doble clic als commits per inspeccionar-ne les diferències. És senzill però eficaç per entendre l'estructura de les ramificacions.

L'ordre del terminal git log --graph et dóna una versió ASCII-art del gràfic històric. Combinat amb --oneline --decorate --all, mostra ràpidament com les branques divergeixen i reconvergeixen, cosa que facilita el raonament sobre quins commits pertanyen a on abans d'executar ordres diff.

Els IDE moderns com ara Visual Studio Code, IntelliJ IDEA o JetBrains Rider inclouen compatibilitat profunda amb Git . Ofereixen diferències paral·leles, comentaris en línia, fragments per etapes, anotacions de culpabilitat i vistes d'historial pràctiques, tot impulsat per les mateixes operacions de Git que podeu executar manualment.

En plataformes allotjades com GitHub i GitLab, les sol·licituds d'extracció o de fusió inclouen vistes de diferències enriquides . Podeu revisar commits individuals, branques senceres o fitxers individuals, comentar línies específiques i aplicar polítiques com ara revisions obligatòries, tot mentre inspeccioneu exactament què ha canviat a través d'interfícies web fàcils d'usar.

Millors pràctiques per treballar amb diferències de Git

Aprofitar al màxim les diferències de Git no només té a veure amb les ordres; també amb els hàbits i la lògica de programació . Les bones pràctiques sobre la creació de ramificacions, el commit i la revisió de codi poden millorar dràsticament la col·laboració i reduir els conflictes de fusió.

Reviseu sempre les diferències abans de fusionar branques. Ja sigui que usi git diff main..feature localment o una sol·licitud d'extracció a GitHub, examinar detingudament els canvis ajuda a evitar que el codi de depuració accidental, els fitxers oblidats o les refactoritzacions inesperades s'introdueixin a la branca principal.

Mantenir les branques enfocades i anomenades de manera significativaÚs de noms descriptius com ara feature/user-auth or bugfix/payment-timeout i limitar cada branca a un objectiu clar fa que les diferències siguin més petites i fàcils de pair, cosa que els vostres companys d'equip sens dubte apreciaran.

Netegeu regularment les branques fusionades o obsoletes . Un cop hàgiu verificat mitjançant registres i diferències que tots els commits rellevants són presents a la branca principal, és recomanable suprimir les branques antigues tant localment com remotament per evitar el desordre i la confusió.

Utilitza eines gràfiques quan la història es complicaPer a repositoris complexos amb molts col·laboradors, combinant git diff amb gràfics d'historial visual, eines IDE o interfícies d'usuari de plataforma poden fer que sigui molt més fàcil rastrejar d'on prové un canvi i com flueix a través de les branques.

Com Git, GitHub i GitLab s'integren per a la col·laboració

És habitual confondre Git amb GitHub o GitLab, però cadascun juga un paper diferent en el flux de treball diari. Comprendre aquests papers és crucial quan es parla de diferències de codi en un entorn d'equip.

El mateix Git és el motor de control de versionsS'executa localment a la vostra màquina, gestiona els commits, les branques, les etiquetes i les diferències, i no requereix accés a Internet. Tot el que hem comentat sobre git diff, git log i la comparació de branques es produeix en aquest nivell.

GitHub és una plataforma al núvol creada sobre Git que allotja repositoris remots . Proporciona una interfície web per navegar pel codi, veure diferències, obrir incidències, gestionar projectes i col·laborar mitjançant sol·licituds d'extracció. És extremadament popular en el món del codi obert i en moltes empreses.

GitLab és una altra plataforma web que allotja repositoris Git, però que se centra principalment en DevOps i CI/CD . A més d'allotjament de codi i diffs, ofereix pipelines integrats per crear, provar i implementar el vostre programari, a més d'eines per a l'escaneig de seguretat, la supervisió i la gestió de projectes.

Tant GitHub com GitLab amplien les capacitats de diff de Git amb funcions de col·laboració riques . Podeu revisar els canvis línia per línia, afegir comentaris, sol·licitar modificacions i finalment aprovar fusions, tot mentre la plataforma fa un seguiment de quins commits pertanyen a quina sol·licitud d'extracció o fusió.

Conceptes de Git i GitHub que influeixen en la manera com compareu codi

Diversos conceptes d'alt nivell a Git i GitHub donen forma a la manera com gestioneu les diferències . Un cop us sentiu còmodes amb les branques i les diferències, aquestes idees es convertiran en part del vostre flux de treball diari.

Els repositoris locals i remots treballen conjuntament per donar suport a la col·laboració en equipEl repositori local és on editeu, prepareu el stage, creeu comparacions i feu commits; el repositori remot del GitHub o del GitLab actua com a font compartida per a l'equip. Comandes com ara git push i git pull sincronitza els commits, que després analitza amb les diferències a banda i banda.

git clone crea una còpia local completa d'un repositori remot, amb tot l'historialUn cop clonat, podeu executar diffs localment sense necessitat d'accés continu a la xarxa. En canvi, una simple descàrrega de fitxers des d'una interfície web només us proporciona fitxers individuals sense historial de versions ni funcions de diff.

git fetch actualitza el vostre coneixement local de branques remotes i fa commits sense fusionar-lesAixò és perfecte quan voleu inspeccionar què han impulsat els altres, utilitzant git diff i git log—abans de decidir com i quan integrar aquests canvis a la vostra pròpia branca.

Les bifurcacions i les sol·licituds d'extracció impulsen el model típic de contribució de codi obert a GitHub . Una bifurcació és la teva pròpia còpia del repositori d'una altra persona; fas canvis a les branques de la teva bifurcació i després obris les sol·licituds d'extracció al projecte original. Els mantenidors revisen els teus canvis mitjançant diffs, els discuteixen als comentaris i finalment els fusionen quan tot sembla correcte.

Blocs de construcció de la col·laboració de GitHub: incidències, PRs, llançaments i rols

Més enllà de les diferències en brut, GitHub integra els canvis de codi en fluxos de treball que impliquen persones, tasques i llançaments . Aquests elements ajuden a estructurar el treball de desenvolupament al voltant de les diferències a la base de codi.

Les incidències són la manera que té GitHub de fer un seguiment d'errors, sol·licituds de funcions i preguntes . Cada incidència es pot vincular a sol·licituds d'extracció, de manera que sempre podeu veure quines diferències de codi estan destinades a solucionar quin problema. Les etiquetes, els assignats i els comentaris converteixen les incidències en un sistema lleuger de gestió de projectes.

Les sol·licituds d'extracció agrupen un conjunt de commits i diffs en una unitat revisable.Quan obriu una PR des de la vostra branca de funcions a main, GitHub mostra totes les diferències rellevants, permet comentaris en línia i aplica comprovacions com les proves automatitzades. Només després que els revisors aprovin la PR, els canvis es fusionen a la línia de codi principal.

Els llançaments a GitHub solen correspondre a commits etiquetats específics . Marquen versions estables del vostre programari, proporcionen text de registre de canvis, adjunten artefactes de compilació i donen als usuaris un punt de referència clar. Darrere de les escenes, les diferències entre etiquetes (visibles a través de les diferències de Git) descriuen exactament què ha canviat d'un llançament a l'altre.

Rols com ara col·laboradors i col·laboradors defineixen permisos al voltant d'aquests fluxos de treball.Els col·laboradors poden enviar incidències i sol·licituds d'extracció, mentre que els col·laboradors solen tenir drets directes de push i fusion. Els rols clars ajuden a controlar qui pot fusionar les diferències en branques crítiques com ara main o producció.

Git en documentació i fluxos de treball de contingut

Git no es limita al codi de programari; també s'utilitza àmpliament per gestionar la documentació . La documentació tècnica per a plataformes com Microsoft Learn resideix en repositoris Git, on els escriptors i enginyers col·laboren utilitzant els mateixos mecanismes de ramificació i diff que els desenvolupadors.

Els repositoris de contingut sovint tenen estructures de directoris organitzadesUn nivell superior articles o una carpeta similar conté fitxers de documentació (normalment Markdown), amb subdirectoris per a serveis o temes específics, a més de fitxers separats media carpetes per a imatges i includes per a fragments reutilitzables. Les diferències de Git faciliten veure exactament com evolucionen el text i l'estructura amb el temps.

Els fitxers de plantilla i les capçaleres de metadades impulsen el SEO, la navegació i l'autoriaMolts repositoris de documents inclouen un template.md fitxer que conté camps de metadades i exemples de format. Quan un escriptor actualitza aquests camps o seccions de contingut, Git registra els canvis i les diferències ajuden els revisors a verificar ràpidament que les metadades i el text del cos s'han actualitzat correctament.

Les sol·licituds d'extracció tenen el mateix paper per a la documentació que per al codi . Els autors creen branques per a articles nous o actualitzats, envien sol·licituds de publicació i els revisors examinen les diferències per garantir la claredat, la precisió i la coherència d'estil abans de fusionar-les. Aquest enfocament aporta control de qualitat a nivell de programari als documents i altres recursos basats en text.

Connexions remotes com ara origin i upstream apareixen amb freqüència en aquests fluxos de treball. origin normalment apunta a la teva forquilla, mentre que upstream apunta al repositori principal del projecte. Sincronitzant amb git fetch upstream i comparant branques amb git diff garanteix que la teva feina estigui alineada amb el contingut oficial més recent.

Dominar com Git representa i compara les diferències de codi desbloqueja una gran quantitat de poder en el vostre treball diari : podeu revisar els canvis amb confiança abans de fusionar-los, mantenir les branques sanes, col·laborar sense problemes en plataformes com GitHub i GitLab, i fins i tot gestionar la documentació amb el mateix rigor que el vostre codi font. Un cop les diferències, els registres i les branques semblen naturals, Git deixa de ser una eina misteriosa i es converteix en un soci fiable que fa un seguiment de cada pas de l'evolució del vostre projecte.

opinió desenvolupament de programari
Article relacionat:
Opinió i anàlisi profunda del desenvolupament de programari modern
Articles Relacionats: