Vairāk
Kā atrisināt apvienošanas konfliktus sistēmā Git
Kā Git sistēmā atrisināt apvienošanas konfliktus?
4577
3
Kā Git sistēmā atrisināt apvienošanas konfliktus?
Izmēģiniet:
git mergetool
Tā atver GUI, kas veic soļus cauri katram konfliktam, un jūs varat izvēlēties, kā veikt apvienošanu. Dažreiz pēc tam ir nepieciešama neliela rediģēšana ar rokām, bet parasti ar to pietiek. Tas noteikti ir daudz labāk, nekā to darīt visu ar rokām.
Saskaņā ar @JoshGlover komentāru:
Komanda ne vienmēr atver GUI, ja vien jūs to neesat instalējis. Man, palaižot
git mergetool
, tika izmantotsvimdiff
. Lai to izmantotu, varat instalēt kādu no šiem rīkiem:meld
,opendiff
,kdiff3
,tkdiff
,xxdiff
,tortoisemerge
,gvimdiff
,diffuse
,ecmerge
,p4merge
,araxis
,vimdiff
,emerge
.Zemāk ir parādīta parauga procedūra, kā izmantot
vimdiff
, lai atrisinātu apvienošanas konfliktus. Pamatojoties uz šo saiti1. solis: Palaidiet terminālī šādas komandas
Tas iestatīs vimdiff kā noklusējuma apvienošanas rīku.
2. solis: Palaidiet terminālī šādu komandu
3. solis: Jūs redzēsiet vimdiff displeju šādā formātā
Šie 4 skati ir
Jūs varat pārvietoties starp šiem skatiem, izmantojot ctrl+w. Uz MERGED skatījumu var tieši nokļūt, izmantojot ctrl+w, kam seko j.
Vairāk informācijas par vimdiff navigāciju šeit un šeit.
4. solis. Jūs varētu rediģēt MERGED skatījumu šādā veidā
Ja vēlaties saņemt izmaiņas no REMOTE
Ja vēlaties saņemt izmaiņas no BASE
Ja vēlaties saņemt izmaiņas no LOCAL
5. solis. Saglabājiet, izejiet, izpildiet un sakārtojiet
:wqa
saglabājiet un izejiet no vigit commit -m "message"
git clean
Noņemiet papildu failus (piemēram, *.orig), ko radījis diff rīks.Nosakiet, kuri faili ir konfliktā (Git vajadzētu to pateikt).
Atveriet katru failu un pārbaudiet atšķirības; Git tās norobežo. Cerams, ka būs skaidrs, kuru katra bloka versiju saglabāt. Iespējams, jums būs nepieciešams to apspriest ar kolēģiem izstrādātājiem, kas nodevuši kodu.
Kad esat atrisinājis konfliktu kādā failā,
git add the_file
.Kad esat atrisinājis visus konfliktus, izpildiet
git rebase --continue
vai citu komandu. Git norādīja, ka to jādara, kad pabeidzāt.Ja bieži veicat nelielas izmaiņas, tad sāciet ar izmaiņu komentāru aplūkošanu, izmantojot
git log --merge
. Tadgit diff
parādīs jums konfliktus.Konfliktiem, kas ietver vairāk nekā dažas rindiņas, ir vieglāk redzēt, kas notiek, izmantojot kādu ārēju GUI rīku. Man patīk opendiff -- Git atbalsta arī vimdiff, gvimdiff, kdiff3, tkdiff, meld, xxdiff, emerge, un jūs varat instalēt citus: Pēc neveiksmīgas apvienošanas
git config merge.tool "your.tool"
iestatīs jūsu izvēlēto rīku, un pēc neveiksmīgas apvienošanasgit mergetool
parādīs jums atšķirības kontekstā.Katru reizi, kad rediģējat failu, lai atrisinātu konfliktu,
git add filename
atjauninās indeksu, un jūsu diff vairs netiks parādīts. Kad visi konflikti ir atrisināti un to faili irgit add
-ēti,git commit
pabeigs apvienošanu.