Svenska ▾ Topics ▾ Latest version ▾ git-merge-file last updated in 2.44.0

NAMN

git-merge-file - Kör en trevägs filsammanslagning

SYNOPSIS

git merge-file [-L <nuvarande-namn> [-L <bas-namn> [-L <annat-namn>]]]
	[--ours|--theirs|--union] [-p|--stdout] [-q|--quiet] [--marker-size=<n>]
	[--[no-]diff3] [--object-id] <nuvarande> <bas> <annat>

BESKRIVNING

Givet tre filer <nuvarande>, <bas> och <annat>, införlivar git merge-file alla ändringar som leder från <bas> till <annat> i <nuvarande>. Resultatet hamnar vanligtvis i <nuvarande>. git merge-file är användbart för att kombinera separata ändringar i ett original. Anta att <bas> är originalet, och både <nuvarande> och <annat> är modifieringar av <bas>, då kombinerar git merge-file båda ändringarna.

En konflikt uppstår om både <nuvarande> och <annat> har ändringar i ett gemensamt radsegment. Om en konflikt hittas, utfärdar git merge-file normalt en varning och ställer konflikten i parentes med rader som innehåller markörerna <<<<<<< och >>>>>>>>. En typisk konflikt ser ut så här:

<<<<<<< A
rader i filen A
=======
rader i filen B
>>>>>>> B

Om det finns konflikter, bör användaren redigera resultatet och ta bort ett av alternativen. När alternativet --ours, --theirs eller --union är aktivt löses dessa konflikter och gynnar rader från <nuvarande>, rader från <annat> eller rader från båda. Längden på konfliktmarkörerna kan anges med alternativet --marker-size.

Om --object-id anges inträffar exakt samma beteende, förutom att istället för att ange vad som ska sammanfogas som filer, anges det som en lista med objekt-ID:n som refererar till blobbar.

Programmets utgångsvärde är negativt vid fel, och antalet konflikter i övrigt (avkortat till 127 om det finns fler än så många konflikter). Om sammanslagningen var ren är utgångsvärdet 0.

git merge-file är utformad för att vara en minimal klon av RCS merge; det vill säga, den implementerar all RCS merge funktionalitet som behövs av git[1].

ALTERNATIV

--object-id

Ange innehållet som ska sammanfogas som blobbar i den aktuella förvaret istället för filer. I det här fallet måste åtgärden ske i en giltigt förvar.

Om alternativet -p anges går den sammanfogade filen (inklusive eventuella konflikter) till standardutdata som vanligt; annars skrivs den sammanfogade filen till objektarkivet och objekt-ID:t för dess blob skrivs till standardutdata.

-L <etikett>

Det här alternativet kan anges upp till tre gånger och anger etiketter som ska användas istället för motsvarande filnamn i konfliktrapporter. Det vill säga, git merge-file -L x -L y -L z a b c genererar utdata som ser ut som att den kommer från filerna x, y och z istället för från filerna a, b och c.

-p

Skicka resultat till standardutdata istället för att skriva över <nuvarande>.

-q

Tyst; varna inte för konflikter.

--diff3

Visa konflikter i "diff3"-stil.

--zdiff3

Visa konflikter i "zdiff3"-stil.

--ours
--theirs
--union

Istället för att lämna konflikter kvar i filen, lös konflikter som gynnar vår (eller deras eller båda) sida av linjerna.

--diff-algorithm={patience|minimal|histogram|myers}

Använd en annan diff-algoritm vid sammanfogning. Den nuvarande standarden är "myers", men att välja en nyare algoritm som "histogram" kan hjälpa till att undvika felsammanfogningar som uppstår på grund av oviktiga matchande linjer (som klammerparenteser från olika funktioner). Se även git-diff[1] --diff-algorithm.

EXEMPEL

git merge-file README.my README README.upstream

kombinerar ändringarna i README.my och README.upstream sedan README, försöker sammanfoga dem och skriver resultatet till README.my.

git merge-file -L a -L b -L c tmp/a123 tmp/b234 tmp/c345

slår samman tmp/a123 och tmp/c345 med basen tmp/b234, men använder etiketterna a och c istället för tmp/a123 och tmp/c345.

git merge-file -p --object-id abc1234 def567 890abcd

kombinerar ändringarna i blobben abc1234 och 890abcd sedan def567, försöker slå samman dem och skriver resultatet till standardutdata

GIT

En del av git[1]-sviten