Sök…


Syntax

  • git merge another_branch [alternativ]
  • git merge - abort

parametrar

Parameter detaljer
-m Meddelande som ska ingå i sammanslagningen begå
-v Visa ordförande utgång
--abort Försök att återställa alla filer till sitt tillstånd
--ff-only Avbryter omedelbart när ett sammanslagningsåtagande skulle krävas
--no-ff Tvingar skapandet av en sammanslagning-åtagande, även om det inte var obligatoriskt
--no-commit Låtsas om att sammanslagningen inte tillät inspektion och finjustering av resultatet
--stat Visa en diffstat efter att fusionen har slutförts
-n / - --no-stat Visa inte diffstat
--squash Tillåter en enda åtagande för den nuvarande grenen med de sammanslagna ändringarna

Slå samman en gren i en annan

git merge incomingBranch

Detta sammanfogar grenen incomingBranch till den gren du för närvarande är i. Om du till exempel befinner dig i master , kommer incomingBranch att slås samman till master .

Sammanfogning kan skapa konflikter i vissa fall. Om detta händer ser du meddelandet Automatic merge failed; fix conflicts and then commit the result. Du måste redigera de konflikterade filerna manuellt, eller för att ångra ditt fusionsförsök, kör:

git merge --abort

Automatisk sammanslagning

När åtagandena på två grenar inte strider kan Git automatiskt slå samman dem:

~/Stack Overflow(branch:master) » git merge another_branch
Auto-merging file_a
Merge made by the 'recursive' strategy.
 file_a | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Avbryta en sammanslagning

När du har startat en sammanslagning kanske du vill stoppa sammanslagningen och återställa allt till dess sammanslagningstillstånd. Använd - --abort :

git merge --abort

Håll ändringar från endast en sida av en sammanslagning

Under en sammanslagning kan du passera --ours eller - för att --theirs till git checkout att göra alla ändringar för en fil från ena sidan eller den andra av en sammanslagning.

$ git checkout --ours   -- file1.txt # Use our version of file1, delete all their changes
$ git checkout --theirs -- file2.txt # Use their version of file2, delete all our changes

Slå samman med en åtagande

Standardbeteende är när sammanslagningen löses som en snabbspolning, bara uppdatera grenpekaren utan att skapa en sammanslagningskombination. Använd --no-ff att lösa.

git merge <branch_name> --no-ff -m "<commit message>"

Hitta alla grenar utan sammanslagna förändringar

Ibland kanske du har grenar som ligger runt som redan har fått sina förändringar samman till master. Detta hittar alla grenar som inte är master som inte har några unika åtaganden jämfört med master . Detta är mycket användbart för att hitta grenar som inte raderades efter att PR slogs samman till master.

 for branch in $(git branch -r) ; do
   [ "${branch}" != "origin/master" ] && [ $(git diff master...${branch} | wc -l) -eq 0 ] && echo -e `git show --pretty=format:"%ci %cr" $branch | head -n 1`\\t$branch
 done | sort -r


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow