Git

Git Merge -no-ff Option

Git Merge -no-ff Option

Förstå Git Merge no-ff-alternativ

Den enkla sammanslagningsförmågan hos git är en av dess styrkor. Under en sammanslagning använder git snabbspolning när den märker att HEAD för den aktuella grenen är en förfader till det engagemang du försöker slå samman. I en snabbspolning går det inte att göra något nytt. Git flyttar bara pekaren. Om detta beteende inte är önskvärt kan du använda no-ff-flaggan för att skapa ett nytt engagemang för sammanslagningen.

Hur Merge ser ut med och utan snabbspolning

Efter en snabbspolning kommer din git-historik att se ut så här:

C0 -> C1 -> C2-> C3

För samma antal åtaganden är här en sammanfogningshistorik utan snabbspolning:

I det första fallet finns det inget som tyder på att det har skett någon förgrening. I det andra fallet visar historiken ett C4-åtagande för att ange var sammanslagningen skedde.

Gå igenom ett exempel

Du skapar ett git-arkiv, skapar en gren och försöker sedan sammanslagningarna med och utan snabbspolning framåt.

Avsnitt 1: Installation

Först kan du skapa git-arkivet med följande steg:

$ mkdir my_project
$ cd my_project
$ git init
$ touch a.Text
$ git add -A
$ git commit -m "C0: Lägga till en.Text"

Låt oss nu skapa en gren som heter funktioner och begå några ändringar:

$ git filialfunktioner
$ git kassafunktioner
$ touch b.Text
$ git add -A
$ git commit -m "C1: Lägga till b.Text"
$ touch c.Text
$ git add -A
$ git commit -m "C2: Lägga till c.Text"
$ touch d.Text
$ git add -A
$ git commit -m "C3: Lägga till d.Text"

Avsnitt 2: Sammanfoga med snabbspolning

Låt oss gå tillbaka till huvudgrenen och slå samman funktioner gren till den:

$ git checkout master
$ git merge-funktioner

Produktion:

Uppdaterar 08076fb ... 9ee88eb
Snabbspola
b.txt | 0
c.txt | 0
d.txt | 0
3 filer har ändrats, 0 infogningar (+), 0 raderingar (-)
skapa läge 100644 b.Text
skapa läge 100644 c.Text
skapa läge 100644 d.Text

Om du kontrollerar historiken ser du:

$ git log - online
9ee88eb C3: Lägga till d.Text
c72b92c C2: Lägga till c.Text
2e4039e C1: Lägga till b.Text
08076fb C0: Lägga till en.Text

Så alla åtaganden från funktionsgrenen finns nu i huvudgrenen. Om du fortsätter att göra ändringar i master finns det inget sätt att veta när funktionsgrenen slogs samman i den.

Avsnitt 3: Utan snabbspolning

Upprepa avsnitt 1 för en ny mapp.

Testa sedan en sammanslagning utan snabbspolning:

$ git checkout master
$ git merge - no-ff-funktion

Det öppnar följande i din gits standardtextredigerare:

Slå samman filialens funktioner
# Ange ett engagemangsmeddelande för att förklara varför denna sammanslagning är nödvändig,
# särskilt om det slår samman en uppdaterad uppströms till en ämnesgren.
#
# Rader som börjar med '#' ignoreras och ett tomt meddelande avbryts
# förpliktelsen.

Ändra kommentarerna. I det här fallet kan du bara lägga till "C4:" innan "Slå samman filialfunktioner" ". Utgången ska se ut så här:

Sammanfogning görs med den "rekursiva" strategin.
b.txt | 0
c.txt | 0
d.txt | 0
3 filer har ändrats, 0 infogningar (+), 0 raderingar (-)
skapa läge 100644 b.Text
skapa läge 100644 c.Text
skapa läge 100644 d.Text

Om du kontrollerar historiken ska det nu se ut som följande:

$ git log - online
e071527 C4: Slå samman filialens funktioner
bb79c25 C3: Lägga till d.Text
692bd8c C2: Lägga till c.Text
a0df62a C1: Lägga till b.Text
7575971 C0: Lägga till en.Text

Du kan se att även om du har exakt samma ändringar, har den här versionen av merge extra C4-engagemang som betyder sammanslagning av funktioner gren till master.

Slutsats

Git merge no-ff-flaggan hjälper till att skapa en mer läsbar historia. Det låter dig sätta taggar som tydligt visar var sammanslagningarna skedde. Det kan spara tid och ansträngning under felsökning.

Ytterligare studier:

Referenser:
Mus Kontrollera och hantera musrörelser mellan flera skärmar i Windows 10
Kontrollera och hantera musrörelser mellan flera skärmar i Windows 10
Dual Display Mouse Manager låter dig kontrollera och konfigurera musrörelser mellan flera skärmar genom att sakta ner dess rörelser nära gränsen. Wind...
Mus WinMouse låter dig anpassa och förbättra muspekarens rörelse på Windows PC
WinMouse låter dig anpassa och förbättra muspekarens rörelse på Windows PC
Om du vill förbättra standardfunktionerna för din muspekare, använd freeware WinMouse. Det lägger till fler funktioner som hjälper dig att få ut det m...
Mus Mus vänsterklicka på knappen fungerar inte på Windows 10
Mus vänsterklicka på knappen fungerar inte på Windows 10
Om du använder en dedikerad mus med din bärbara dator eller stationära dator men musens vänsterklick-knapp fungerar inte på Windows 10/8/7 av någon an...