Git: Branch samenvoegen met Master

Snel antwoord – Branch samenvoegen met Master

Als u op zoek bent naar een snel antwoord, kunt u een branch samenvoegen met de master filiaal – jij checkout master en merge some_branch:

$ git checkout new-branch
# ...develop some code...

$ git add .
$ git commit –m "Some commit message"
$ git checkout master
Switched to branch 'master'
$ git merge new-branch

Jij altijd checkout de branch waarin je merget, en merge een tak die al wijzigingen heeft.

Inzicht in het samenvoegen van branches met Git

Als je echter nieuwer bent bij Git, is het de moeite waard om een ​​paar minuten de tijd te nemen om deze commando's te begrijpen en hoe ze werken. Het is verrassend eenvoudig en brengt je een heel eind.

Opmerking: In 2020 heeft Git (naast grote repository-hostingplatforms zoals GitHub, GitLab, enz.) een verandering in de officiële terminologie aangenomen en werd de standaard branchnaam gewijzigd in main, vanwege de negatieve connotaties van het woord master kan met zich meebrengen. Veel projecten zijn niet gemigreerd of hebben hun hoofdtakken niet hernoemd, dus voor de nabije toekomst – de voorwaarden master en main zullen waarschijnlijk door elkaar gebruikt worden.

Een van de krachtigste eigenschappen van Git is de mogelijkheid om eenvoudig vertakkingen en wijzigingen in de codebasis te maken en samen te voegen.

Het gedistribueerde karakter van Git moedigt gebruikers aan om vaak nieuwe branches te creëren en deze regelmatig samen te voegen als onderdeel van het ontwikkelingsproces – en bepaalde Git-workflows maken hier op grote schaal misbruik van.

Dit verbetert fundamenteel de ontwikkelingsworkflow voor de meeste projecten door kleinere, meer gerichte, gedetailleerde commits aan te moedigen, onderworpen aan strenge peer review.

In erfenis Versiebeheersystemen (net als CVS) beperkte de moeilijkheid van het samenvoegen het tot gevorderde gebruikers. Andere moderne maar gecentraliseerde versiebeheersystemen zoals Omverwerping vereisen dat commits worden gedaan naar een centrale repository, dus een soepele workflow met lokale vertakkingen en samenvoegingen is atypisch.

Een veelgebruikte vertakkingsworkflow in Git is het maken van een nieuwe codevertakking voor elke nieuwe functie, bugfix of verbetering.

Deze worden genoemd Functietakken.

Elke vertakking verdeelt de commits die betrekking hebben op een bepaald kenmerk in compartimenten. Zodra de nieuwe feature compleet is – dat wil zeggen dat er een reeks wijzigingen is vastgelegd in de feature branch – is deze klaar om weer te worden samengevoegd in de master branch (of een andere hoofdcoderegeltak, afhankelijk van de gebruikte workflow).

Opmerking: Functievertakking is niet de Slechts Je kunt een vertakkingsworkflow gebruiken, maar het is een algemeen aanvaarde workflow en wordt mogelijk gemaakt door de eenvoud van de samenvoegfunctionaliteiten van Git.

Voeg een branch samen met een andere met Git

De git branch commando wordt gebruikt om alle bestaande vertakkingen in een repository weer te geven. Er verschijnt een asterisk naast de momenteel actieve tak:

$ git branch
* master

Om een ​​nieuwe branch te maken, kunnen we de git branch new-branch commando. Dit zal een nieuwe branch creëren die de commits op de momenteel actieve branch weerspiegelt:

$ git branch new-branch
$ git branch
* master
new-branch

Opmerking: Achter de schermen, Git niet maak feitelijk een nieuwe set commits om de nieuwe branch te vertegenwoordigen. Een branch is als een tag, en de commits zijn dat ook gedeeld. Jij bent uitbreiden een nieuwe reeks wijzigingen van de hoofdtak. Zodra een feature branch voltooid is en samengevoegd is met de hoofdvertakking, worden de wijzigingen daarin de hoofdvertakking, totdat je een nieuwe feature branch samenvoegt met de hoofdvertakking.

Op dit punt hebben we een nieuwe branch aangemaakt, maar bevinden we ons nog steeds op de bronbranch. Om aan de nieuwe branch te gaan werken, moeten we eerst de opdracht uitvoeren git checkout new-branch. Hierdoor wordt de actieve vertakking naar de nieuwe vertakking gewijzigd:

$ git checkout new-branch
Switched to branch ‘new-branch'
$ git branch
master
* new-branch

Op dit punt kunnen commits worden gemaakt op de nieuwe branch om de nieuwe functie te implementeren. Zodra de functie voltooid is, kan de vertakking weer worden samengevoegd met de hoofdcodevertakking.

Eerst rennen we git checkout master om de actieve tak terug te veranderen naar de master tak. Vervolgens voeren we het commando uit git merge new-branch naar voeg de nieuwe functie samen met de master tak.

Opmerking: git merge voegt de opgegeven vertakking samen met de momenteel actieve vertakking. We moeten dus op de tak zijn waar we zijn samensmelten in.

Als je een nieuwe feature in de hoofdvertakking samenvoegt, wil je eerst overschakelen naar de hoofdvertakking en er dan in samenvoegen:

# ...develop some code...

$ git add .
$ git commit –m "Some commit message"
$ git checkout master
Switched to branch 'master'
$ git merge new-branch

Bekijk onze praktische, praktische gids voor het leren van Git, met best-practices, door de industrie geaccepteerde normen en bijgevoegd spiekbriefje. Stop met Googlen op Git-commando's en eigenlijk leren het!

Als alles goed gaat, zit onze taak erop. De nieuwe feature commits verschijnen nu in de hoofdvertakking. Het is echter mogelijk dat Git de samenvoeging niet kan voltooien vanwege een conflictwijziging in de bronvertakking. Dit heet een samenvoegconflict.

Samenvattend zijn hier de commando's om een ​​nieuwe branch aan te maken, enkele commits te maken en deze weer in de master samen te voegen:

$ git checkout master
$ git branch new-branch
$ git checkout new-branch

# ...develop some code...

$ git add .
$ git commit –m "Some commit message"
$ git checkout master
$ git merge new-branch

Over de auteur

Dit artikel is geschreven door Jacob Stopak, een softwareconsultant en -ontwikkelaar met een passie voor het helpen van anderen om hun leven te verbeteren door middel van code. Jacob is de schepper van Initiële verplichting – een site die nieuwsgierige ontwikkelaars helpt te leren hoe hun favoriete programma's worden gecodeerd. Het aanbevolen project helpt mensen leer Git op codeniveau.

Tijdstempel:

Meer van Stapelmisbruik