Git'teki birle┼čtirme ├žat─▒┼čmalar─▒ nas─▒l ├ž├Âz├╝l├╝r


Al─▒nan cevaba git


Git'teki birle┼čtirme ├žak─▒┼čmalar─▒n─▒ nas─▒l ├ž├Âzebilirim?


4551









Cevap say─▒s─▒n─▒ say: 30






Deneyin: git mergetool

Her ├žat─▒┼čmada sizi ad─▒m ad─▒m y├Ânlendiren bir GUI a├žar ve nas─▒l birle┼čtirilece─čini se├žersiniz. Bazen daha sonra biraz elle d├╝zenleme yap─▒lmas─▒ gerekir, ancak genellikle kendi ba┼č─▒na yeterli olur. Her ┼čeyi kesinlikle elle yapmaktan daha iyidir.

@JoshGlover yorumuna g├Âre:

Siz bir tane y├╝klemedi─činiz s├╝rece, komut mutlaka bir GUI a├žmaz. git mergetool Benim i├žin ko┼čmak vimdiff , kullan─▒lma ile sonu├žland─▒ . Bunun yerine kullanmak i├žin a┼ča─č─▒daki ara├žlardan birini y├╝kleyebilirsiniz: meld , opendiff , kdiff3 , tkdiff , xxdiff , tortoisemerge , gvimdiff , diffuse , ecmerge , p4merge , araxis , vimdiff , emerge .

vimdiff Birle┼čtirme ├žak─▒┼čmalar─▒n─▒ ├ž├Âzmek i├žin kullan─▒lacak ├Ârnek prosed├╝r a┼ča─č─▒dad─▒r . Dayanarak bu ba─člant─▒y─▒

Ad─▒m 1 : Terminalinizde a┼ča─č─▒daki komutlar─▒ ├žal─▒┼čt─▒r─▒n

 git config merge.tool vimdiff
git config merge.conflictstyle diff3
git config mergetool.prompt false
 

Bu vimdiff'u varsay─▒lan birle┼čtirme arac─▒ olarak ayarlayacakt─▒r.

Ad─▒m 2 : Terminalde a┼ča─č─▒daki komutu ├žal─▒┼čt─▒r─▒n

 git mergetool
 

Ad─▒m 3 : A┼ča─č─▒daki formatta bir ekran g├Âr├╝nt├╝s├╝ g├Âreceksiniz

   ÔĽöÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽŽÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽŽÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽŚ
  ÔĽĹ       ÔĽĹ      ÔĽĹ        ÔĽĹ
  ÔĽĹ LOCAL ÔĽĹ BASE ÔĽĹ REMOTE ÔĽĹ
  ÔĽĹ       ÔĽĹ      ÔĽĹ        ÔĽĹ
  ÔĽáÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽęÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽęÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽú
  ÔĽĹ                       ÔĽĹ
  ÔĽĹ        MERGED         ÔĽĹ
  ÔĽĹ                       ÔĽĹ
  ÔĽÜÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽÉÔĽŁ
 

Bu 4 g├Âr├╝n├╝m

YEREL - bu ge├žerli ┼čubeden dosya

BASE - ortak ata, dosyan─▒n her iki de─či┼čiklikten ├Ânce nas─▒l g├Âr├╝nd├╝─č├╝

UZAKTAN - ┼čubenize birle┼čtirdi─činiz dosya

MERGED - birle┼čtirme sonucu, depoda kaydedilen budur

ctrl+ ─░le bu g├Âr├╝n├╝mler aras─▒nda gezinebilirsiniz w. Do─črudan kullanarak birle┼čmi┼č g├Âr├╝n├╝m├╝ ula┼čabilir ctrl+ wizledi j.

Daha fazla bilgi burada vimdiff navigasyon burada ve burada

4. Ad─▒m . MERGED g├Âr├╝n├╝m├╝n├╝ a┼ča─č─▒daki ┼čekilde d├╝zenleyebilirsiniz

UZAKTAN de─či┼čiklik almak istiyorsan─▒z

 :diffg RE  
 

BASE'ten de─či┼čiklik almak istiyorsan─▒z

 :diffg BA  
 

LOCAL'dan de─či┼čiklik almak istiyorsan─▒z

 :diffg LO 
 

Adım 5 . Kaydet, Çık, Taahhüt ve Temizlik

:wqa kaydet ve vi'den ├ž─▒k

git commit -m "message"

git clean Diff arac─▒ taraf─▒ndan olu┼čturulan ekstra dosyalar─▒ (├Ârn. * .Orig) kald─▒r─▒n.


2742







─░┼čte, ├╝stten bir muhtemel kullan─▒m ├Ârne─či:

Baz─▒ de─či┼čiklikler yapacaks─▒n─▒z, ancak hata!

 git fetch origin
git pull origin master

From ssh://[email protected]:22/projectname
 * branch            master     -> FETCH_HEAD
Updating a030c3a..ee25213
error: Entry 'filename.c' not uptodate. Cannot merge.
 

B├Âylece g├╝ncel kald─▒n─▒z ve tekrar deneyin, ancak bir ├žat─▒┼čma var:

 git add filename.c
git commit -m "made some wild and crazy changes"
git pull origin master

From ssh://[email protected]:22/projectname
 * branch            master     -> FETCH_HEAD
Auto-merging filename.c
CONFLICT (content): Merge conflict in filename.c
Automatic merge failed; fix conflicts and then commit the result.
 

B├Âylece de─či┼čikliklere g├Âz atmaya karar veriyorsunuz:

 git mergetool
 

Oh benim, oh benim, yukar─▒ havza baz─▒ ┼čeyleri de─či┼čtirdi, ama sadece de─či┼čikliklerim─▒ kullanmak i├žin ... hay─▒r ... onlar─▒n de─či┼čiklikleri ...

 git checkout --ours filename.c
git checkout --theirs filename.c
git add filename.c
git commit -m "using theirs"
 

Ve sonra son bir kez deneriz

 git pull origin master

From ssh://[email protected]:22/projectname
 * branch            master     -> FETCH_HEAD
Already up-to-date.
 

S├╝rpriz!


1663







Birle┼čtirme ara├žlar─▒n─▒, ├žat─▒┼čmay─▒ veya ├ž├Âz├╝m├╝ ├ž├Âzmeme nadiren yard─▒mc─▒ oluyor. Genellikle bir metin d├╝zenleyicisindeki ├žak─▒┼čma belirte├žlerine bakarken ve git logÔÇÖu ek olarak kullan─▒yorum.

─░┼čte birka├ž ipucu:

Bir ipucu

Buldu─čum en iyi ┼čey "diff3" birle┼čtirme ├žak─▒┼čmas─▒ stilini kullanmak:

git config merge.conflictstyle diff3

Bu ┼čunun gibi ├žat─▒┼čma belirte├žleri ├╝retir:

 <<<<<<<
Changes made on the branch that is being merged into. In most cases,
this is the branch that I have currently checked out (i.e. HEAD).
|||||||
The common ancestor version.
=======
Changes made on the branch that is being merged in. This is often a 
feature/topic branch.
>>>>>>>
 

Orta b├Âl├╝m ortak atalar─▒n neye benzedi─čidir. Bu kullan─▒┼čl─▒d─▒r, ├ž├╝nk├╝ her dalda neyin de─či┼čti─čini daha iyi anlamak i├žin onu alt ve ├╝st s├╝r├╝mlerle kar┼č─▒la┼čt─▒rabilirsiniz; bu, her bir de─či┼čikli─čin amac─▒n─▒n ne oldu─ču konusunda size daha iyi bir fikir verir.

├çat─▒┼čma sadece birka├ž sat─▒r ise, bu genellikle ├žat─▒┼čmay─▒ ├žok a├ž─▒k bir hale getirir. (Bir ├žat─▒┼čmay─▒ nas─▒l ├ž├Âzece─činizi bilmek ├žok farkl─▒d─▒r; ba┼čkalar─▒n─▒n ├╝zerinde ne ├╝zerinde ├žal─▒┼čt─▒─č─▒n─▒n fark─▒nda olman─▒z gerekir. Kafan─▒z kar─▒┼č─▒ksa, o ki┼čiyi odan─▒za ├ža─č─▒rman─▒z en iyisidir, b├Âylece arad─▒─č─▒n─▒z─▒ g├Ârebilirler. en.)

E─čer ├žat─▒┼čma daha uzunsa, o zaman ├╝├ž b├Âl├╝m├╝n her birini ÔÇťbenimÔÇŁ, ÔÇťortakÔÇŁ ve ÔÇťonlar─▒nÔÇŁ gibi ├╝├ž ayr─▒ dosyaya kesip yap─▒┼čt─▒raca─č─▒m.

Ard─▒ndan, ├žat─▒┼čmaya neden olan iki farkl─▒ par├žay─▒ g├Ârmek i├žin a┼ča─č─▒daki komutlar─▒ ├žal─▒┼čt─▒rabilirim:

 diff common mine
diff common theirs
 

Bu bir birle┼čtirme arac─▒ kullanmakla ayn─▒ de─čildir, ├ž├╝nk├╝ bir birle┼čtirme arac─▒ birbiriyle ├želi┼čmeyen fark topaklar─▒n─▒ da i├žerecektir. Bunu rahats─▒z edici buluyorum.

─░ki ipucu

Biri bundan daha ├Ânce bahsetti, ancak her fark grubunun arkas─▒ndaki niyetini anlamak, genellikle bir ├žat─▒┼čman─▒n nereden geldi─čini ve bununla nas─▒l ba┼ča ├ž─▒k─▒laca─č─▒n─▒ anlamak i├žin ├žok yararl─▒d─▒r.

 git log --merge -p <name of file>
 

Bu, ortak ata ile birle┼čtirdi─činiz iki kafa aras─▒ndaki dosyaya dokunan t├╝m taahh├╝tleri g├Âsterir. (Birle┼čmeden ├Ânce her iki dalda da var olan taahh├╝tleri i├žermez.) Bu, mevcut ├žat─▒┼čman─▒zda a├ž─▒k├ža bir etken olmayan fark ├Ânsezilerini g├Ârmezden gelmenize yard─▒mc─▒ olur.

├ť├ž ipucu

De─či┼čikliklerinizi otomatik ara├žlarla do─črulay─▒n.

Otomatik testleriniz varsa, bunlar─▒ ├žal─▒┼čt─▒r─▒n. E─čer bir varsa tifti─či , o ├žal─▒┼čt─▒r─▒n. E─čer in┼ča edilebilir bir proje ise, o zaman taahh├╝t etmeden ├Ânce onu in┼ča et, vb. Yap. Her durumda, de─či┼čikliklerin hi├žbir ┼čeyi bozmad─▒─č─▒ndan emin olmak i├žin biraz test yapman─▒z gerekir. (Heck, ├žat─▒┼čmas─▒z bir birle┼čme bile ├žal─▒┼čma kodunu bozabilir.)

D├Ârd├╝nc├╝ ipucu

├ľnceden planlamak; i┼č arkada┼člar─▒n─▒zla ileti┼čim kurun.

├ľnceden planlama yapmak ve ba┼čkalar─▒n─▒n ne ├╝zerinde ├žal─▒┼čt─▒─č─▒n─▒n fark─▒nda olmak birle┼čme ├žat─▒┼čmalar─▒n─▒ ├Ânlemeye yard─▒mc─▒ olabilir ve / veya daha ├Ânce ├ž├Âz├╝lmesine yard─▒mc─▒ olabilir - detaylar hala taze.

├ľrne─čin, siz ve ba┼čka bir ki┼činin her ikisinin de ayn─▒ dosya k├╝mesini etkileyebilecek farkl─▒ yeniden d├╝zenleme ├╝zerine ├žal─▒┼čt─▒─č─▒n─▒ biliyorsan─▒z, zaman zaman birbirinizle konu┼čmal─▒ ve her birinizin ne t├╝r de─či┼čikliklere u─črad─▒─č─▒n─▒ daha iyi anlayabilmelisiniz. yap─▒m. Planlanan de─či┼čikliklerinizi paralel de─čil seri olarak yaparsan─▒z, zamandan ve emekten tasarruf sa─člayabilirsiniz.

B├╝y├╝k bir kod par├žas─▒n─▒ kesen b├╝y├╝k yeniden yap─▒land─▒rmalar i├žin, seri olarak ├žal─▒┼čmay─▒ ┼čiddetle d├╝┼č├╝nmelisiniz: bir ki┼či t├╝m yeniden d├╝zenlemeyi ger├žekle┼čtirirken herkes kodun bu alan─▒nda ├žal─▒┼čmay─▒ durdurur.

Seri olarak ├žal─▒┼čam─▒yorsan─▒z (zaman bask─▒s─▒ nedeniyle, belki de), o zaman beklenen birle┼čme ├žat─▒┼čmalar─▒ hakk─▒nda ileti┼čim kurmak, en az─▒ndan ayr─▒nt─▒lar hala tazeken sorunlar─▒ en k─▒sa s├╝rede ├ž├Âzmenize yard─▒mc─▒ olur. ├ľrne─čin, bir meslekta┼č bir haftal─▒k bir s├╝re boyunca y─▒k─▒c─▒ bir taahh├╝tte bulunuyorsa, o meslekta┼č ┼čubesinde o hafta boyunca g├╝nde bir veya iki kez birle┼čtirme / yeniden ├Âdeme yapmay─▒ se├žebilirsiniz. Bu ┼čekilde, birle┼čtirme / yeniden d├╝zenleme ├žak─▒┼čmalar─▒n─▒ bulursan─▒z, her ┼čeyi b├╝y├╝k bir topakta birle┼čtirmek i├žin birka├ž hafta beklemekten daha ├žabuk ├ž├Âzebilirsiniz.

Be┼činci ─░pucu

Birle┼čmeden emin de─čilseniz, zorlamay─▒n.

Birle┼čme, ├Âzellikle ├žok fazla say─▒da ├žak─▒┼čan dosya oldu─čunda ve ├žak─▒┼čma belirte├žleri y├╝zlerce sat─▒r─▒ kaplad─▒─č─▒nda ├žok zor olabilir. ├ço─ču zaman yaz─▒l─▒m projelerini tahmin ederken s─▒k─▒c─▒ bir birle┼čtirme i┼čleminin ├╝stesinden gelmek gibi genel giderler i├žin yeterli zaman i├žermez, bu nedenle her ├žat─▒┼čmay─▒ keserek birka├ž saat ge├žirmek i├žin ger├žek bir s├╝r├╝klenme hissi uyand─▒r─▒r.

Uzun vadede, ├Ânceden planlama yapmak ve ba┼čkalar─▒n─▒n ne ├╝zerinde ├žal─▒┼čt─▒─č─▒n─▒n fark─▒nda olmak, birle┼čme ├žat─▒┼čmalar─▒n─▒ ├Ânceden tahmin etmek ve daha k─▒sa s├╝rede do─čru ┼čekilde ├ž├Âzmek i├žin kendinizi haz─▒rlamak i├žin en iyi ara├žlard─▒r.


718







  1. Hangi dosyalar─▒n ├žak─▒┼čt─▒─č─▒n─▒ belirleyin (Git size bunu s├Âylemelidir).

  2. Her dosyay─▒ a├ž─▒n ve farklar─▒ inceleyin; Git onlar─▒ s─▒n─▒rland─▒r─▒r. Umar─▒m her blo─čun hangi versiyonunun tutulaca─č─▒ belli olacakt─▒r. Bunu, kodu i┼čleyen geli┼čtiricilerle tart─▒┼čman─▒z gerekebilir.

  3. Bir dosyadaki ├žak─▒┼čmay─▒ ├ž├Âzd├╝kten sonra git add the_file .

  4. T├╝m ├žat─▒┼čmalar─▒ ├ž├Âzd├╝kten sonra , git rebase --continue tamamlad─▒─č─▒n─▒zda Git'in yapmas─▒ gerekenleri yap─▒n.


337







Y─▒─č─▒n Ta┼čmas─▒ sorusundaki cevaplara g├Âz at─▒n Git'te bir birle┼čtirme i┼čleminden vazge├žme , ├Âzellikle Charles Bailey'nin sorunun farkl─▒ s├╝r├╝mlerini nas─▒l g├Âr├╝nt├╝leyece─čini g├Âsteren cevab─▒ , ├Ârne─čin

 # Common base version of the file.
git show :1:some_file.cpp

# 'Ours' version of the file.
git show :2:some_file.cpp

# 'Theirs' version of the file.
git show :3:some_file.cpp
 

103







Birle┼čtirme ├žak─▒┼čmalar─▒ ayn─▒ anda bir dosyada de─či┼čiklik yap─▒ld─▒─č─▒nda ger├žekle┼čir. ─░┼čte ├ž├Âzmek i├žin nas─▒l.

git CLI

├çak─▒┼čan duruma girdi─činizde yapman─▒z gerekenler:

  1. ├çak─▒┼čan dosyalar─▒n listesini not edin: git status ( Unmerged paths b├Âl├╝m├╝n alt─▒nda ).
  2. Her dosya i├žin ├žat─▒┼čmalar─▒ a┼ča─č─▒daki yakla┼č─▒mlardan biriyle ayr─▒ ayr─▒ ├ž├Âz├╝n:

    • ├çak─▒┼čmalar─▒ ├ž├Âzmek i├žin GUI kullan─▒n: git mergetool (en kolay yol).

    • Uzaktan / di─čer versiyonu kullan─▒m─▒n─▒ kabul etmek i├žin: git checkout --theirs path/file . Bu, o dosya i├žin yapt─▒─č─▒n─▒z yerel de─či┼čiklikleri reddeder.

    • Yerel s├╝r├╝m├╝m├╝z├╝ / s├╝r├╝m├╝m├╝z├╝ kabul etmek i├žin ┼čunu kullan─▒n: git checkout --ours path/file

      Ancak, baz─▒ nedenlerden dolay─▒ ├žat─▒┼čmalar─▒n yap─▒ld─▒─č─▒ uzaktan de─či┼čiklikler nedeniyle dikkatli olmal─▒s─▒n─▒z.

      ─░lgili: git "bizim" ve "onlar─▒n" kesin anlam─▒ nedir?

    • ├çak─▒┼čan dosyalar─▒ manuel olarak d├╝zenleyin ve <<<<< / aras─▒ndaki kod blo─čunu aray─▒n, >>>>> sonra yukar─▒dan veya a┼ča─č─▒dan s├╝r├╝m├╝ se├žin ===== . Bak─▒n─▒z: ├çat─▒┼čmalar─▒n nas─▒l sunuldu─ču .

    • Yol ve dosya ad─▒ ├žak─▒┼čmalar─▒ git add / ile ├ž├Âz├╝lebilir git rm .

  3. Son olarak, kullanarak i┼člemek i├žin dosyalar─▒ haz─▒r g├Âzden ge├žirin: git status .

    Hala alt─▒nda herhangi bir dosya varsa Unmerged paths ve el ile ├žat─▒┼čmay─▒ ├ž├Âzmek verdin o zaman Git bunu a┼ča─č─▒daki ┼čekilde ├ž├Âzm├╝┼č oldu─čunu bildirmek: git add path/file .

  4. T├╝m ├žat─▒┼čmalar ba┼čar─▒l─▒ bir ┼čekilde ├ž├Âz├╝ld├╝yse, de─či┼čiklikleri ┼ču ┼čekilde yap─▒n: git commit -a ve her zamanki gibi uzaktan kumandaya bas─▒n.

Ayr─▒ca bkz: GitHub'daki komut sat─▒r─▒ndan bir birle┼čtirme ihtilaf─▒n─▒ ├ž├Âzme

Pratik e─čitim i├žin a┼ča─č─▒dakileri kontrol edin: Senaryo 5 - Katacoda'dan Birle┼čtirme ├çat─▒┼čmalar─▒n─▒ D├╝zeltme .

DiffMerge

Windows, macOS ve Linux / Unix'teki dosyalar─▒ g├Ârsel olarak kar┼č─▒la┼čt─▒rabilen ve birle┼čtirebilen DiffMerge'i ba┼čar─▒yla kulland─▒m .

Grafiksel olarak 3 dosya aras─▒ndaki de─či┼čiklikleri g├Âsterebilir ve otomatik birle┼čtirme (yapmak g├╝venli oldu─čunda) ve elde edilen dosyay─▒ d├╝zenlemek ├╝zerinde tam kontrol sa─člar.


DiffMerge

G├Âr├╝nt├╝ kayna─č─▒: DiffMerge (Linux ekran g├Âr├╝nt├╝s├╝)

Basit├že indirin ve repo olarak ├žal─▒┼čt─▒r─▒n:

 git mergetool -t diffmerge .
 

Mac os i┼čletim sistemi

MacOS'ta a┼ča─č─▒dakiler arac─▒l─▒─č─▒yla y├╝kleyebilirsiniz:

 brew install caskroom/cask/brew-cask
brew cask install diffmerge
 

Ve muhtemelen (sa─članmam─▒┼čsa) PATH'nuza yerle┼čtirilen a┼ča─č─▒daki ekstra basit paketleyiciye ihtiyac─▒n─▒z vard─▒r (├Ârn. /usr/bin ):

 #!/bin/sh
DIFFMERGE_PATH=/Applications/DiffMerge.app
DIFFMERGE_EXE=${DIFFMERGE_PATH}/Contents/MacOS/DiffMerge
exec ${DIFFMERGE_EXE} --nosplash "[email protected]"
 

Sonra a┼ča─č─▒daki klavye k─▒sayollar─▒n─▒ kullanabilirsiniz:

  • Ôîś- Alt- Up/ Down├Ânceki / sonraki de─či┼čikliklere atlamak i├žin.
  • Ôîś- Alt- Left/ RightSoldan veya sa─čdan de─či┼čiklik kabul etmek i├žin

Alternatif olarak , ├╝├ž├╝nc├╝ bir dosya veya dizin olu┼čturmak i├žin iki dosyay─▒ veya dizini bir araya getirmenize izin veren opendiff'i (Xcode Tools'un bir par├žas─▒) kullanabilirsiniz .


92







S─▒k s─▒k k├╝├ž├╝k taahh├╝tlerde bulunuyorsan─▒z, yorumlara bakmaya ba┼člay─▒n git log --merge . O git diff zaman size ├žat─▒┼čmalar─▒ g├Âsterece─čim.

Birka├ž sat─▒rdan fazla i├žeren ├žat─▒┼čmalar i├žin harici bir GUI arac─▒nda neler olup bitti─čini g├Ârmek daha kolayd─▒r. Opendiff'i seviyorum - Git ayr─▒ca vimdiff, gvimdiff, kdiff3, tkdiff, meld, xxdiff'i destekliyor, kutudan ├ž─▒k─▒yor ve di─čerlerini y├╝kleyebilirsiniz: git config merge.tool "your.tool" se├žti─činiz arac─▒ ayarlayacak ve sonra git mergetool ba┼čar─▒s─▒z bir birle┼čim size farkl─▒l─▒klar─▒ ba─člamda g├Âsterecektir.

Bir ├žak─▒┼čmay─▒ ├ž├Âzmek i├žin bir dosyay─▒ her d├╝zenledi─činizde git add filename , dizini g├╝nceller ve fark─▒n─▒z art─▒k g├Âstermez. T├╝m ├žat─▒┼čmalar ele al─▒nd─▒─č─▒nda ve dosyalar─▒ git add topland─▒─č─▒nda, git commit birle┼čtirme i┼čleminizi tamamlar.


77


2008-10-02





├çat─▒┼čmalar─▒n Nas─▒l Sunuldu─čunu g├Âr├╝n veya Git'te, git merge birle┼čme ├žak─▒┼čmas─▒ i┼čaret├žilerinin ne oldu─čunu anlamaya y├Ânelik belgelere bak─▒n.

Ayr─▒ca, ├çak─▒┼čmalar─▒ ├ç├Âzme b├Âl├╝m├╝ ├žat─▒┼čmalar─▒n nas─▒l ├ž├Âz├╝lece─čini a├ž─▒klar:

Bir ├žat─▒┼čma g├Ârd├╝kten sonra iki ┼čey yapabilirsiniz:

  • Birle┼čmemeye karar verin. ─░htiyac─▒n─▒z olan tek temizlik, dizin dosyas─▒n─▒ HEAD 2. tersine ├ževirme taahh├╝d├╝ne s─▒f─▒rlamak ve 2. ve 3. taraf─▒ndan yap─▒lan ├žal─▒┼čma a─čac─▒ de─či┼čikliklerini temizlemek .; git merge --abort Bunun i├žin kullan─▒labilir.

  • ├çat─▒┼čmalar─▒ ├ž├Âz. Git, ├žal─▒┼čma a─čac─▒ndaki ├žat─▒┼čmalar─▒ i┼čaretler. Dosyalar─▒ ┼čekle sokup git add dizine ekleyin. git commit Anla┼čmay─▒ imzalamak i├žin kullan─▒n .

├çat─▒┼čma yoluyla birka├ž ara├žla ├žal─▒┼čabilirsiniz:

  • Bir birle┼čtirme aleti kullan─▒n. git mergetool size birle┼čtirme yoluyla ├žal─▒┼čacak bir grafik birle┼čtirme arac─▒ ba┼člatmak i├žin.

  • Farklara bak. git diff hem HEAD ve hem de MERGE_HEAD s├╝r├╝mlerdeki de─či┼čiklikleri vurgulayarak ├╝├ž y├Ânl├╝ bir fark g├Âsterecektir .

  • Her daldaki farklara bak─▒n. git log --merge -p <path> ├ľnce HEAD versiyon i├žin sonra da MERGE_HEAD versiyon i├žin diffs g├Âsterilecektir .

  • Orijinallere bak. git show :1:filename ortak atay─▒ git show :2:filename g├Âsterir, HEAD s├╝r├╝m├╝ git show :3:filename g├Âsterir ve MERGE_HEAD s├╝r├╝m├╝n├╝ g├Âsterir .

Ayr─▒ca, birle┼čtirme ├žak─▒┼čmas─▒ i┼čaretleyicileri ve bunlar─▒n Temel Git Kitap├ž─▒klar─▒ Ayr─▒nt─▒lar─▒ Pro Git kitab─▒ b├Âl├╝m├╝nde nas─▒l ├ž├Âz├╝lece─čini de okuyabilirsiniz .http://git-scm.com/book/ch3-2.html%23Basic-Merge-Conflicts#Basic-Merge-Conflicts


45


2013-07-14





─░├žin Emacs yar─▒ manuel birle┼čtirme ├žat─▒┼čmalar─▒ ├ž├Âzmek isteyen kullan─▒c─▒lar:

 git diff --name-status --diff-filter=U
 

ihtilaf ├ž├Âz├╝m├╝ gerektiren t├╝m dosyalar─▒ g├Âsterir.

Bu dosyalar─▒n her birini birer birer veya hepsini birer birer a├ž─▒n─▒z:

 emacs $(git diff --name-only --diff-filter=U)
 

EmacsÔÇÖta d├╝zenlemeleri gerektiren bir tamponu ziyaret ederken,

 ALT+x vc-resolve-conflicts
 

Bu, ├╝├ž arabellek a├žacakt─▒r (benim, onlar─▒n ve ├ž─▒kt─▒ arabellek). 'N' (sonraki b├Âlge), 'p' (├Ân b├Âlge) tu┼člar─▒na basarak gezinin. Madeni veya b├Âlgelerini s─▒ras─▒yla ├ž─▒kt─▒ tampon belle─čine kopyalamak i├žin 'a' ve 'b' tu┼člar─▒na bas─▒n. Ve / veya ├ž─▒kt─▒ tamponunu do─črudan d├╝zenleyin.

Tamamland─▒─č─▒nda: 'q' d├╝─čmesine bas─▒n. Emacs bu tamponu saklamak isteyip istemedi─činizi sorar: evet. Tamponu bitirdikten sonra, normalden ko┼čarak ├ž├Âz├╝ld├╝─č├╝ gibi i┼čaretleyin:

 git add FILENAME
 

T├╝m tampon t├╝rleriyle bitti─činde

 git commit
 

birle┼čtirmeyi bitirmek i├žin.


39


2013-02-22





S├╝r├╝m├╝m├╝ tam olarak istiyorum ya da bireysel de─či┼čiklikleri incelemek ve her biri i├žin karar vermek istiyorum.

Benim veya onlar─▒n versiyonunu tam olarak kabul et :

S├╝r├╝m├╝m├╝ kabul et (yerel, bizim):

 git checkout --ours -- <filename>
git add <filename>              # Marks conflict as resolved
git commit -m "merged bla bla"  # An "empty" commit
 

S├╝r├╝mlerini kabul et (uzaktan kumanda, onlar─▒n):

 git checkout --theirs -- <filename>
git add <filename>
git commit -m "merged bla bla"
 

├çal─▒┼čt─▒rmak t├╝m ├žak─▒┼čma dosyalar─▒ i├žin yapmak istiyorsan─▒z :

 git merge --strategy-option ours
 

veya

 git merge --strategy-option theirs
 

T├╝m de─či┼čiklikleri inceleyin ve ayr─▒ ayr─▒ kabul edin

  1. git mergetool
  2. De─či┼čiklikleri inceleyin ve her biri i├žin herhangi bir s├╝r├╝m├╝ kabul edin.
  3. git add <filename>
  4. git commit -m "merged bla bla"

Varsay─▒lan komut sat─▒r─▒nda mergetool ├žal─▒┼č─▒r . Komut sat─▒r─▒n─▒n kullan─▒lmas─▒ mergetool ayr─▒ bir soru olmal─▒d─▒r.

Ayr─▒ca y├╝kleyebilirsiniz g├Ârsel arac─▒ ├Ârne─čin, bunun i├žin meld ve ├žal─▒┼čt─▒r─▒n

 git mergetool -t meld
 

Yerel s├╝r├╝m (bizimki), "temel" veya "birle┼čtirilmi┼č" s├╝r├╝m├╝ (birle┼čtirmenin ge├žerli sonucu) ve uzak s├╝r├╝m├╝ (onlar─▒n) a├žacak. Birle┼čtirilen s├╝r├╝m├╝ tamamlad─▒─č─▒n─▒zda kaydedin, git mergetool -t meld "Hi├žbir dosyan─▒n birle┼čtirilmesi gerekmez" ifadesini alana kadar tekrar ├žal─▒┼čt─▒r─▒n , ard─▒ndan Ad─▒m 3 ve 4'e gidin.


38







Git'teki birle┼čtirme ├žak─▒┼čmalar─▒n─▒ d├╝zeltmek i├žin l├╝tfen a┼ča─č─▒daki ad─▒mlar─▒ izleyin:

  1. Git durumunu kontrol et: git durumu

  2. Yama setini al: git getir (Git taahh├╝d├╝nden do─čru yamay─▒ se├ž)

  3. Yerel bir ┼čubeye ├Âdeme yap─▒n ( buradaki ├Ârne─čimde temp1 ): git checkout -b temp1

  4. Son i├žerikleri master'den ├žekin : git pull --rebase origin master

  5. Birle┼čtirme arac─▒n─▒ ba┼člat─▒n ve ├žak─▒┼čmalar─▒ kontrol edin ve d├╝zeltin ... ve uzaktaki ┼čubedeki de─či┼čiklikleri ge├žerli ┼čubenizle kontrol edin: git mergetool

  6. Durumu tekrar kontrol et: git status

  7. Yerel olarak mergetool taraf─▒ndan olu┼čturulan istenmeyen dosyalar─▒ silin, genellikle mergetool * .orig uzant─▒l─▒ ekstra dosyalar olu┼čturur. L├╝tfen bu dosyay─▒ yaln─▒zca kopyalanan ve silinen de─či┼čiklikleri yerel olarak silin ve dosyalar─▒n─▒z─▒n do─čru s├╝r├╝m├╝n├╝ ekleyin. git add #your_changed_correct_files

  8. Durumu tekrar kontrol et: git status

  9. De─či┼čiklikleri ayn─▒ i┼člem kimli─čine uygulay─▒n (bu, yeni bir ayr─▒ yama k├╝mesinden ka├ž─▒n─▒r): git commit --amend

  10. Ana ┼čubeye bas : git bas (Git havuzuna)


30







Basit├že, depolardan birindeki de─či┼čikliklerin ├Ânemli olmad─▒─č─▒n─▒ biliyorsan─▒z ve t├╝m de─či┼čiklikleri di─čerinin lehine ├ž├Âzmek istiyorsan─▒z, ┼čunlar─▒ kullan─▒n:

 git checkout . --ours
 

Deponuzun lehine olan de─či┼čiklikleri ├ž├Âzmek i├žin , veya

 git checkout . --theirs
 

de─či┼čiklikleri di─čerinin veya ana havuzun lehine ├ž├Âzmek i├žin .

Yoksa dosyalar─▒ birer birer ad─▒mlamak, birle┼čtirme arac─▒n─▒n oldu─čunu s├Âylemek p4merge ya da daha ├Ânce kurdu─čunuz birinin ad─▒n─▒ yazmak i├žin bir GUI birle┼čtirme arac─▒ kullanman─▒z gerekir.

 git mergetool -t p4merge
 

bir dosyay─▒ bitirdikten sonra kaydetmeniz ve kapatman─▒z gerekecek, b├Âylece bir sonraki a├ž─▒lacakt─▒r.


30







Bonus:

Yukar─▒daki cevaplarda ├žekme / alma / birle┼čtirme s├Âzlerinde, ilgin├ž ve ├╝retken bir numaray─▒ payla┼čmak isterim,

git pull --rebase

Bu yukar─▒daki komut, git hayat─▒mda ├žok zaman kazand─▒ran en kullan─▒┼čl─▒ komuttur.

Yeni yapt─▒─č─▒n─▒z de─či┼čikliklerinizi uzak sunucuya g├Ândermeden ├Ânce git pull --rebase olduk├ža git pull ve elle deneyin; merge en son uzak sunucu de─či┼čikliklerini otomatik olarak senkronize edecek (getirme + birle┼čtirme ile) ve yerel son taahh├╝d├╝n├╝z├╝ git g├╝nl├╝─č├╝nde en ├╝ste koyacakt─▒r. Manuel ├žekme / birle┼čtirme konusunda endi┼čelenmenize gerek yok.

├çat─▒┼čma durumunda, sadece kullan─▒n

 git mergetool
git add conflict_file
git rebase --continue
 

Ayr─▒nt─▒lara bak─▒n: http://gitolite.com/git-pull--rebase


29







3 ad─▒m var:

  1. Hangi dosyalar─▒n komutla ├žak─▒┼čmalara neden oldu─čunu bulun

     git status
     
  2. Gibi i┼čaretlenmi┼č ├žak─▒┼čmalar─▒ bulaca─č─▒n─▒z dosyalar─▒ kontrol edin

     <<<<<<<<head
    blablabla
     
  3. ─░stedi─činiz ┼čekilde de─či┼čtirin, daha sonra komutlar─▒ uygulay─▒n

     git add solved_conflicts_files
    git commit -m 'merge msg'
     

27







Birle┼čtirme ├žat─▒┼čmalar─▒n─▒, di─čerlerinin de ayr─▒nt─▒l─▒ anlatt─▒─č─▒ gibi d├╝zeltebilirsiniz.

Bence as─▒l anahtar, de─či┼čikliklerin yerel ve uzak depolarla nas─▒l akt─▒─č─▒n─▒ bilmesi. Bunun anahtar─▒ izleme bran┼člar─▒n─▒ anlamakt─▒r. ─░zleme ┼čubesini, yerel, ger├žek dosya dizinim ve orijinli olarak tan─▒mlanan uzaktan kumanda aras─▒nda 'ortadaki eksik par├ža' olarak d├╝┼č├╝nd├╝─č├╝m├╝ buldum.

┼×ahsen ben bunu ├Ânlemek i├žin 2 ┼čeyi al─▒┼čkanl─▒k haline getirdim.

Yerine:

 git add .
git commit -m"some msg"
 

─░ki dezavantaj─▒ var -

a) T├╝m yeni / de─či┼čtirilmi┼č dosyalar eklenir ve bu da baz─▒ istenmeyen de─či┼čiklikler i├žerebilir.
b) ├ľnce dosya listesini g├Âzden ge├žiremezsiniz.

Bunun yerine ben yapar─▒m:

 git add file,file2,file3...
git commit # Then type the files in the editor and save-quit.
 

Bu yolla, hangi dosyalar─▒n eklenece─či konusunda daha bilin├žli olursunuz ve ayr─▒ca mesaj─▒n d├╝zenleyicisini kullan─▒rken listeyi g├Âzden ge├žirir ve biraz daha d├╝┼č├╝n├╝rs├╝n├╝z. Ayr─▒ca, -m se├ženek yerine tam ekran d├╝zenleyici kulland─▒─č─▒mda taahh├╝t iletilerimi de iyile┼čtirdi─čini g├Âr├╝yorum .

[G├╝ncelleme - zaman ge├žtik├že daha fazla konuya ge├žtim:

 git status # Make sure I know whats going on
git add .
git commit # Then use the editor
 

]

Ayr─▒ca (ve durumunuzla daha alakal─▒), ka├ž─▒nmaya ├žal─▒┼č─▒yorum:

 git pull
 

veya

 git pull origin master.
 

├ž├╝nk├╝ pull, bir birle┼čtirme anlam─▒na gelir ve yerel olarak birle┼čtirmek istemedi─činiz de─či┼čiklikleriniz varsa, birle┼čtirilmi┼č kodla ve / veya birle┼čtirilmi┼č olmas─▒ gerekmeyen kod i├žin birle┼čtirme ├žak─▒┼čmalar─▒na kolayca son verebilirsiniz.

Bunun yerine yapmaya ├žal─▒┼č─▒yorum

 git checkout master
git fetch   
git rebase --hard origin/master # or whatever branch I want.
 

Bunu yararl─▒ da bulabilirsiniz:

git ┼čubesi, ├žatal, getir, birle┼čtirme, rebase ve klonlama, farklar nelerdir?


26







CoolAJ86'n─▒n cevab─▒ hemen hemen her ┼čeyi ├Âzetliyor. Her iki dalda da ayn─▒ kod par├žas─▒nda de─či┼čiklik yapman─▒z durumunda, elle birle┼čtirme yapman─▒z gerekecektir. ├çak─▒┼čan dosyay─▒ herhangi bir metin d├╝zenleyicide a├ž─▒n ve a┼ča─č─▒daki yap─▒y─▒ g├Ârmelisiniz.

 (Code not in Conflict)
>>>>>>>>>>>
(first alternative for conflict starts here)
Multiple code lines here
===========
(second alternative for conflict starts here)
Multiple code lines here too    
<<<<<<<<<<<
(Code not in conflict here)
 

E┼čit i┼čaretleri ve k├Â┼čeli parantezleri s├Âkerken alternatiflerden birini veya her ikisinin bir kombinasyonunu yeni kodun olmas─▒n─▒ istedi─činiz ┼čekilde se├žin.

 git commit -a -m "commit message"
git push origin master
 

23







 git log --merge -p [[--] path]
 

Her zaman benim i├žin ├žal─▒┼č─▒yor gibi g├Âr├╝nm├╝yor ve genellikle iki dal aras─▒nda farkl─▒ olan her taahh├╝d├╝ sergilemekle bitiyor, bu durum -- yolu komuttan ay─▒r─▒rken bile oluyor .

Bu soruna ge├žici bir ├ž├Âz├╝m bulmak i├žin iki komut sat─▒r─▒ a├žmak ve bir seferde a├žmakt─▒r.

 git log ..$MERGED_IN_BRANCH --pretty=full -p [path]
 

ve di─čerinde

 git log $MERGED_IN_BRANCH.. --pretty=full -p [path]
 

Yerine $MERGED_IN_BRANCH ben ve birle┼čtirilmi┼č ┼čube ile [path] ├žak─▒┼čt─▒─č─▒n─▒ dosyayla. Bu komut t├╝m taahh├╝tleri yama bi├žiminde ( .. ) iki i┼člem aras─▒nda kaydeder. Bir taraf─▒ bo┼č b─▒rak─▒rsan─▒z git yukar─▒daki komutlardaki gibi otomatik olarak kullan─▒l─▒r HEAD (bu durumda birle┼čtirdi─činiz dal).

Bu, ayr─▒ld─▒ktan sonra iki daldaki dosyaya hangi taahh├╝tlerin girdi─čini g├Ârmenizi sa─člayacakt─▒r. Genellikle ├žat─▒┼čmalar─▒ ├ž├Âzmeyi ├žok kolayla┼čt─▒r─▒r.


16







12 Aral─▒k 2016 tarihi itibariyle, ┼čubeleri birle┼čtirebilir ve github.com'da ├žak─▒┼čmalar─▒ ├ž├Âzebilirsiniz

Bu nedenle, komut sat─▒r─▒n─▒ veya burada daha eski yan─▒tlardan sunulan 3. taraf ara├žlar─▒n─▒ kullanmak istemiyorsan─▒z GitHub'─▒n yerel arac─▒yla gidin.

Bu blog yaz─▒s─▒ ayr─▒nt─▒l─▒ olarak a├ž─▒klanmaktad─▒r, ancak temel hususlar, UI ├╝zerinden iki ┼čubeyi 'birle┼čtirmek' durumunda, ┼čimdi sizi bir birle┼čtirme ├žat─▒┼čmalar─▒yla ba┼ča ├ž─▒kman─▒za izin veren bir d├╝zenleyiciye g├Ât├╝recek bir '├žat─▒┼čmalar─▒ ├ž├Âzme' se├žene─či g├Âreceksiniz.


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin


15







kullanma patience

patience Birle┼čtirme ├Âzyinelemeli stratejisini kullanarak anla┼čmazl─▒─č─▒ ├ž├Âzmekten ba┼čka hi├ž kimsenin bahsetmedi─činden ┼ča┼č─▒rd─▒m . B├╝y├╝k bir birle┼čme ├žat─▒┼čmas─▒ patience i├žin, benim i├žin iyi sonu├žlar verdi. Fikir, bireysel ├žizgiler yerine bloklar─▒ e┼čle┼čtirmeye ├žal─▒┼čaca─č─▒d─▒r.

├ľrne─čin, program─▒n─▒z─▒n girintisini de─či┼čtirirseniz, varsay─▒lan Git birle┼čtirme stratejisi bazen { farkl─▒ i┼člevlere ait tek parantezlerle e┼čle┼čir . Bundan ka├ž─▒n─▒l─▒r patience :

 git merge -s recursive -X patience other-branch
 

Belgelerden:

 With this option, merge-recursive spends a little extra time to avoid 
mismerges that sometimes occur due to unimportant matching lines 
(e.g., braces from distinct functions). Use this when the branches to 
be merged have diverged wildly.
 

Ortak ata ile kar┼č─▒la┼čt─▒rma

Bir birle┼čtirme ├žat─▒┼čman─▒z varsa ve ┼čubelerini de─či┼čtirirken ba┼čkalar─▒n─▒n akl─▒nda ne oldu─čunu g├Ârmek istiyorsan─▒z, ┼čubelerini do─črudan ortak ata ile (┼čubemiz yerine) kar┼č─▒la┼čt─▒rmak daha kolay olur. Bunun i├žin kullanabilirsiniz merge-base :

 git diff $(git merge-base <our-branch> <their-branch>) <their-branch>
 

Genellikle, yaln─▒zca belirli bir dosyan─▒n de─či┼čikliklerini g├Ârmek istersiniz:

 git diff $(git merge-base <our-branch> <their-branch>) <their-branch> <file>
 

15







├çat─▒┼čmalardan ka├ž─▒nmak i├žin daima a┼ča─č─▒daki ad─▒mlar─▒ izlerim.

  • git check-out master (Ana ┼čubeye gelin)
  • git pull (En son kodu almak i├žin master'─▒n─▒z─▒ g├╝ncelleyin)
  • git check -b mybranch (Yeni bir ┼čubeye ├Âdeme yap─▒n ve bu bran┼č ├╝zerinde ├žal─▒┼čmaya ba┼člay─▒n, b├Âylece ustan─▒z her zaman bagaj─▒n ├╝st├╝nde kal─▒r.)
  • Git ekle. AND git commit AND git push (de─či┼čikliklerden sonra yerel ┼čubenizde)
  • git check-out ustas─▒ (Ustan─▒za geri d├Ân├╝n.)

┼×imdi ayn─▒ ┼čeyi yapabilir ve istedi─činiz kadar yerel ┼čubeyi koruyabilir ve e┼čzamanl─▒ olarak ├žal─▒┼čabilirsiniz, sadece gerekti─činde ┼čubenize gitmem gerekiyor.


12







Daldan (test) ustaya birle┼čtirmek istiyorsan─▒z, a┼ča─č─▒daki ad─▒mlar─▒ uygulayabilirsiniz:

Ad─▒m 1: ┼×ubeye git

 git checkout test
 

Ad─▒m 2: git pull --rebase origin master

Ad─▒m 3: Baz─▒ ├žak─▒┼čmalar varsa, de─či┼čtirmek i├žin bu dosyalara gidin.

4. Ad─▒m: Bu de─či┼čiklikleri ekleyin

 git add #your_changes_files
 

Ad─▒m 5: git rebase --continue

Ad─▒m 6: Hala bir ├želi┼čki varsa, 3. ad─▒ma tekrar geri d├Ân├╝n. ├çat─▒┼čma yoksa, a┼ča─č─▒dakileri yap─▒n: git push origin +test

Ad─▒m 7: Ve sonra test ile usta aras─▒nda bir ├žat─▒┼čma yoktur. Do─črudan birle┼čtirme kullanabilirsiniz.


11







Birle┼čtirme ├žat─▒┼čmalar─▒ farkl─▒ durumlarda ortaya ├ž─▒kabilir:

  • "Git getir" ve ard─▒ndan "git birle┼čtirme" ├žal─▒┼čt─▒r─▒rken
  • "Git fetch" ve sonra "git rebase" ├žal─▒┼čt─▒r─▒rken
  • "Git pull" komutunu ├žal─▒┼čt─▒r─▒rken (asl─▒nda yukar─▒da belirtilen ko┼čullardan birine e┼čittir)
  • "Git stash pop" ├žal─▒┼čt─▒r─▒rken
  • Git yamalar uygularken (├Ârne─čin e-posta ile aktar─▒lacak dosyalara aktar─▒lan taahh├╝tler)

├çak─▒┼čmalar─▒ ├ž├Âzmek i├žin Git ile uyumlu bir birle┼čtirme arac─▒ y├╝klemeniz gerekiyor. ┼×ahsen KDiff3 kullan─▒yorum ve ho┼č ve kullan─▒┼čl─▒ buldum. Windows s├╝r├╝m├╝n├╝ buradan indirebilirsiniz:

https://sourceforge.net/projects/kdiff3/files/

BTW Git Extensions'─▒ kurarsan─▒z, kurulum sihirbaz─▒nda Kdiff3'├╝ kurmak i├žin bir se├ženek var.

Sonra git git config Kdiff'i birle┼čtirme arac─▒ olarak kullanacak ┼čekilde yap─▒land─▒r─▒l─▒r:

 $ git config --global --add merge.tool kdiff3
$ git config --global --add mergetool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
$ git config --global --add mergetool.kdiff3.trustExitCode false

$ git config --global --add diff.guitool kdiff3
$ git config --global --add difftool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
$ git config --global --add difftool.kdiff3.trustExitCode false
 

(Yolu, Kdiff exe dosyas─▒n─▒n ger├žek yoluyla de─či┼čtirmeyi unutmay─▒n.)

Sonra bir birle┼čtirme ├žat─▒┼čmas─▒ her kar┼č─▒la┼čt─▒─č─▒n─▒zda, sadece bu komutu ├žal─▒┼čt─▒rman─▒z gerekir:

 $git mergetool
 

Sonra Kdiff3'├╝ a├žar ve ilk ├Ânce birle┼čtirme ├žat─▒┼čmalar─▒n─▒ otomatik olarak ├ž├Âzmeye ├žal─▒┼č─▒r. ├çat─▒┼čmalar─▒n ├žo─ču kendili─činden ├ž├Âz├╝lecekti ve gerisini elle d├╝zeltmeniz gerekiyor.

─░┼čte Kdiff3'├╝n neye benzedi─či:


Resim tan─▒m─▒n─▒ buraya girin

Ard─▒ndan, bir kez yapt─▒ktan sonra dosyay─▒ kaydedin ve ├žak─▒┼čan bir sonraki dosyaya gider ve t├╝m ├žat─▒┼čmalar ├ž├Âz├╝lene kadar ayn─▒ ┼čeyi tekrar yapars─▒n─▒z.

Her ┼čeyin ba┼čar─▒l─▒ bir ┼čekilde birle┼čtirilip birle┼čtirilmedi─čini kontrol etmek i├žin mergetool komutunu tekrar ├žal─▒┼čt─▒r─▒n, bu sonucu almal─▒s─▒n─▒z:

 $git mergetool
No files need merging
 

11







Bu cevaplar, edit├Ârdeki her ┼čeyi yapmay─▒ tercih eden, benim gibi VIM kullan─▒c─▒lar─▒ i├žin bir alternatif eklemek.


TL; DR


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin


Tpope, ka├žak denilen VIM i├žin bu harika eklentiyle geldi . Kurulduktan sonra :Gstatus ├žak─▒┼čan dosyalar─▒ kontrol etmek ve :Gdiff Git'i birle┼čtirme y├Ântemiyle a├žmak i├žin ko┼čabilirsiniz .

3 yolla birle┼čtikten sonra, ka├žak , birle┼čtirdi─činiz dallar─▒n herhangi birinin de─či┼čikliklerini a┼ča─č─▒daki ┼čekilde alman─▒za olanak tan─▒r:

  • :diffget //2 , orijinal ( HEAD ) ┼čubeden de─či┼čiklikler al─▒n :
  • :diffget //3 , birle┼čtirme ┼čubesinden de─či┼čiklikler al:

Dosyay─▒ birle┼čtirmeyi tamamlad─▒─č─▒n─▒zda :Gwrite , birle┼čtirilmi┼č arabellek yaz─▒n. Vimcasts , bu ad─▒mlar─▒ ayr─▒nt─▒l─▒ olarak anlatan harika bir video yay─▒nlad─▒ .


7







git getir
git git dal─▒n─▒ al
git rebase master

Bu ad─▒mda, tercih etti─činiz IDE'yi kullanarak ├žak─▒┼čmay─▒ gidermeye ├žal─▒┼čacaks─▒n─▒z.

Https://help.github.com/articles/resolving-a-merge-conflict-using-the-command-line/ dosyas─▒ndaki uyu┼čmazl─▒─č─▒ gidermek ├╝zere kontrol etmek i├žin bu ba─člant─▒y─▒ takip
edebilirsiniz.

git add
git git rebase - devam
git taahh├╝d├╝z - g├Ânderim
git itme k├Âkeni HEAD: refs / taslaklar / ana (taslaklar gibi itin)

┼×imdi her ┼čey yolunda ve gerrit'teki taahh├╝d├╝n├╝z├╝ bulacaks─▒n─▒z

Umar─▒m bu, bu konuyla ilgili her ki┼čiye yard─▒mc─▒ olur.


4







VS Kodu ─░├žin Gitlense

Gitlense'yi VS Kodu i├žin deneyebilirsiniz , Onlar temel ├Âzellikleri ┼čunlard─▒r:

3. ├çat─▒┼čmalar─▒ Kolayca ├ç├Âz├╝n.

Bu ├Âzelli─či zaten be─čendim:


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

2. Ge├žerli ├çizgi Su├žla.


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

3. Oluk Su├žu


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

4. Durum ├çubu─ču Su├žlamas─▒


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

Ve burada onlar─▒ kontrol edebilece─činiz bir├žok ├Âzellik var .


4







Hen├╝z yapmad─▒ysan─▒z, d├╝zenleme i├žin Visual Studio Code'u deneyin. Bu, birle┼čtirmeyi denedikten sonra (ve birle┼čtirme ├žak─▒┼čmalar─▒nda ortaya ├ž─▒k─▒yor) .VS kodu, birle┼čtirme ├žak─▒┼čmalar─▒n─▒ otomatik olarak alg─▒lar.

Orijinalinde yap─▒lan de─či┼čikliklerin neler oldu─čunu ve kabul etmeniz incoming veya yap─▒lmamas─▒ gerekti─čini g├Âstererek size ├žok iyi yard─▒mc─▒ olabilir.

current change (birle┼čme ├Âncesinde orijinal olan─▒ ifade eder) '?

Bana yard─▒mc─▒ oldu ve sizin i├žin de i┼če yarayabilir!

Not: Yaln─▒zca kodunuzu ve Visual Studio Kodunuzu kullanarak yap─▒land─▒rd─▒ysan─▒z ├žal─▒┼č─▒r.


2







├çat─▒┼čmalar─▒ ├ž├Âzmenin daha g├╝venli bir yolu git-mediate kullanmakt─▒r (burada ├Ânerilen ortak ├ž├Âz├╝mler olduk├ža hataya a├ž─▒kt─▒r).

Nas─▒l kullan─▒laca─č─▒ hakk─▒nda h─▒zl─▒ bir tan─▒t─▒m i├žin bu yaz─▒ya bak─▒n .


1







Visual Studio'yu kullananlar i├žin (benim durumumda 2015)

  1. Projenizi VS'de kapat─▒n. ├ľzellikle b├╝y├╝k projelerde VS, kullan─▒c─▒ aray├╝z├╝n├╝ kullan─▒rken birle┼čme an─▒nda ├ž─▒ld─▒rma e─čilimindedir.

  2. Komut isteminde birle┼čtirme yap─▒n.

    git ├Âdeme target_branch

    git kaynak birle┼čtirme

  3. Ard─▒ndan projeyi VS'de a├ž─▒n ve Team Explorer -> Branch'e gidin. ┼×imdi Birle┼čtir'in beklemede oldu─čunu ve ├žak─▒┼čan dosyalar─▒n iletinin hemen alt─▒nda listelendi─čini belirten bir ileti var.

  4. ├çak─▒┼čan dosyay─▒ t─▒klad─▒─č─▒n─▒zda Birle┼čtirme, Kar┼č─▒la┼čt─▒rma, Kaynak Alma, Hedef Alma se├žene─činiz olur. VS'deki birle┼čtirme arac─▒n─▒n kullan─▒m─▒ ├žok kolayd─▒r.


1


2017-07-10





─░ntelliJ i IDE olarak kullan─▒yorsan─▒z, ebeveyninizi ┼čubenizle birle┼čtirmeyi deneyin.

 git checkout <localbranch>
git merge origin/<remotebranch>
 

Bu gibi t├╝m ├žat─▒┼čmalar─▒ g├Âsterecek

A_MBPro: test anu $ git birle┼čtirme orijini / Otomatik birle┼čtirme src / test / java / com /.../ TestClass.java CONFLICT (i├žerik): src / test / java / com /.../ TestClass.java i├žindeki birle┼čtirme ├žat─▒┼čmas─▒

┼×imdi TestClass.java dosyas─▒n─▒n intelliJ'de k─▒rm─▒z─▒ renkle g├Âsterildi─čini not edin.

 Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified:   src/test/java/com/.../TestClass.java
 

Dosyay─▒ intelliJ'de a├ž, b├Âl├╝mleri olacak

   <<<<<<< HEAD
    public void testMethod() {
    }
    =======
    public void testMethod() { ...
    }
    >>>>>>> origin/<remotebranch>
 

HEAD yerel ┼čubenizdeki de─či┼čiklikler ve men┼če / uzak ┼čubedeki de─či┼čiklikler. ─░htiyac─▒n─▒z olan ┼čeyleri burada saklay─▒n ve ihtiya├ž duymad─▒─č─▒n─▒z ┼čeyleri kald─▒r─▒n. Normal ad─▒mlar─▒n ge├žmesi gerekiyor. Yani

    git add TestClass.java
   git commit -m "commit message"
   git push
 

1


2017-07-11





A┼ča─č─▒daki s├╝reci takip ediyorum.

Birle┼čtirme ihtilaf─▒n─▒ d├╝zeltme i┼člemi:

  1. ─░lk olarak, en son birle┼čtirmek istedi─činiz hedef dal─▒ndan ├žekin. git pull origin develop

  2. Hedeften en son haberleri ald─▒k├ža, art─▒k bu ekstra karakterleri silerek IDE'deki uyu┼čmazl─▒─č─▒ manuel olarak ├ž├Âz.

  3. Bir Do git add olmas─▒, b├Âylece git kuyru─ču bu D├╝zenlenen dosyalar─▒ eklemek i├žin commit ve push ayn─▒ ┼čubeye ├╝zerinde ├žal─▒┼čt─▒─č─▒n─▒z.

  4. Yap─▒ld─▒─č─▒ gibi git add , git commit de─či┼čiklikleri yapmak i├žin bir yap .

  5. ┼×imdi de─či┼čiklikleri ├žal─▒┼čma ┼čubenize itin git push origin HEAD

Bu ve Bitbucket veya GitHub kullan─▒yorsan─▒z, ├žekme iste─činizde ├ž├Âz├╝mlendi─čini g├Âreceksiniz.


1



─░lgili yay─▒nlar


Git'teki ana dal─▒n tamam─▒ ba┼čka bir daldan nas─▒l de─či┼čtirilir? [├žift]

Git'teki belirli dosyalar nas─▒l yoksay─▒l─▒r

Teslim ├Âncesi gitmi┼č dosya fark─▒n─▒ nas─▒l g├Ârebilirsiniz?

GitÔÇÖteki yerel komisyonlar nas─▒l at─▒l─▒r?

Bir kabuk beti─činde sembolik ba─člant─▒lar nas─▒l ├ž├Âz├╝l├╝r?

Git ve baz─▒ git fark─▒nda detayl─▒ olmayan de─či┼čiklikler nas─▒l g├Âsteriliyor?

Yazar─▒ de─či┼čtirmek i├žin Git'teki birka├ž komisyon nas─▒l de─či┼čtirilir?

Git'te 'her ikisi de eklenmi┼č' bir birle┼čme ihtilaf─▒n─▒ ├ž├Âzme?

Git'te dosya ge├žmi┼či nas─▒l g├Âr├╝nt├╝lenir?

Git'te izlenmeyen dosyalar nas─▒l kald─▒r─▒l─▒r?

Etiketle ilgili di─čer sorular [git]


Linux'ta belirli bir metin i├žeren t├╝m dosyalar─▒ nas─▒l bulurum?

NullReferenceException nedir ve nas─▒l d├╝zeltebilirim?

Bir nesnenin t├╝r├╝n├╝ belirleme?

─░mleci EditText'te metnin sonuna yerle┼čtirin

Bir tan─▒m ile beyan aras─▒ndaki fark nedir?

Bir a├ž─▒l─▒r listenin se├žilen de─čerini jQuery ile de─či┼čtirin

SQL Server: ─░lk sat─▒ra nas─▒l kat─▒l─▒rs─▒n─▒z

Node.js: izleyen bir yeni sat─▒r olmadan konsola yazd─▒r─▒l─▒yor mu?

SQL Server VARCHAR / NVARCHAR dizgisine sat─▒r sonu nas─▒l eklenir

Tan─▒ms─▒z, tan─▒mlanmam─▒┼č ve uygulama tan─▒ml─▒ davran─▒┼č