Birleştirme Türleri
Git merge ve rebase, hedef daldaki commit’leri kaynak dala entegre etmenin iki yoludur. Ayrıca Git merge, hızlı-ileri alma (fast-forward) veya hızlı-ileri almadan (no-fast-forward) birleştirme gerçekleştirebilir. Hedef dalın ucu (head) kaynak dalda mevcutsa, varsayılan olarak hızlı-ileri alma yapılır; eksikse hızlı-ileri almadan birleştirme yapılır. Git rebase ise hedef dalın commit geçmişini yeniden sıralayan başka bir birleştirme türüdür.
Hızlı-ileri alma (fast-forward) birleştirme

Varsayılan olarak Git merge, eksik commit’leri hedef dala entegre etmek için hızlı-ileri alma kullanır. Örneğin, uzak sunucudan pull komutuyla yerel dalı güncellerken kullanılır. Hızlı-ileri alma, hedef dalın ucu kaynak dalda yoksa Git bunu uygulamayacağından, birleştirme çakışması oluşturmaz.
Hızlı-ileri almadan (no-fast-forward) birleştirme

Hızlı-ileri almadan birleştirme, üç yönlü (three-way) veya gerçek birleştirme olarak da adlandırılır. Kaynak ve hedef daldaki değişiklikleri entegre ederek hedef dal üzerinde yeni bir commit oluşturur. Değişiklikler, her iki daldaki son ortak commit’ten sonra harmanlanır. Bizim örneğimizde bu, C’den sonradır. Bu birleştirme türü, kaynak dal hedef dal ile çelişiyorsa Git merge çakışması tetikleyecektir. Yukarıdaki diyagramda, birleştirme commit’i (X), K ve E’nin birleştirme commit’inin ebeveynleri olduğu, kaynak ve hedef dalın entegrasyonuyla oluşturulmuştur.
Rebase

Git rebase diğer türlerden biraz farklıdır. Hedef dalın commit geçmişinin sırasını değiştirir. Rebase, kaynak dalı öyle bir şekilde entegre eder ki hedef dal, son ortak commit’ten sonra önce kaynak dalın tüm değişikliklerini, ardından hedef dal commit’lerini içerir. Bizim örneğimizde son ortak commit C’dir; D ve E ise kaynak daldandır. K* commit’i, farklı bir commit kimliğiyle K’nın aynısıdır. C’ye bağlanmak yerine E’ye bağlanacaktır. Hızlı-ileri almadan birleştirmeye benzer biçimde, kaynak ve hedef dalda uyumluluk sorunları varsa Git, yeniden temellendirmeyi (rebase) tamamlamadan önce çakışmayı çözmeniz için uyarı verir.
Git Birleştirme Çakışması Türleri
İki tür Git birleştirme çakışması vardır: başlangıçta ve birleştirme süreci sırasında - Atlassian. Bu bölümde her iki türü ve her senaryoda çözüm yollarını ele alacağız.
Birleştirmenin başlangıcında
Çalışma dizininde veya hazırlama alanında (staging area) değişiklikler varsa Git merge başlangıçta başarısız olur. Gelen birleştirme commit’lerinin değişiklikleri ezmesini önlemek için başta başarısız olur. Bu, diğer dallarla veya geliştiricilerle değil, yerel değişikliklerle çakışma nedeniyle gerçekleşir. Yerel durumu stabilize etmek için git stash, git commit, git checkout veya git reset gibi komutları kullanabilirsiniz.
Birleştirme sırasında
Birleştirme sırasında bir hata, birden fazla geliştiricinin aynı dosyayı değiştirdiği ve kaynak dal ile hedef dal arasında bir çakışma olduğu anlamına gelir. Otomatik birleştirme başarısız olursa Git, sorunları el ile çözmenizi ister. Değişiklikleri görselleştirip entegre etmeye yardımcı olması için üçüncü taraf araçlar da kullanabilirsiniz.
Git Birleştirme Çakışmalarını Çözme Komutları
Bu bölümde, Git birleştirme çakışmalarını görselleştirmek ve çözmek için çeşitli yerel komutları öğreneceğiz.
Yaygın komutlar
Git status, değiştirilmiş dosyaların, hazırlama alanının ve commit’lerin durumunu göstermek için en sık kullanılan komuttur. Birleştirme sürecinde çakışan dosyaları belirlemek için kullanılır.
git status
--merge argümanlı Git log, kaynak dal ile çakışma içindeki commit’lerin listesini üretir.
git log --merge
Varsayılan olarak git diff seçeneği, commit edilmemiş değişikliklerle önceki commit’ler arasındaki farkı gösterir. Git diff, dalları, commit’leri ve dosyaları karşılaştırmak için kullanılır. Gelecekteki birleştirme çakışmalarını önlemeye yardımcıdır.
git diff
Başlangıçta başarısız olan birleştirme için komutlar
Checkout, değişiklikleri geri almak veya yeni ya da eski bir dala geçmek için kullanılır.
git checkout
Git reset, çalışma dizinindeki ve hazırlama alanındaki değişiklikleri geri almaya yarar.
git reset --mixed
Birleştirme sırasında çakışmalar için komutlar
--abort argümanı birleştirme sürecini durdurur ve değişiklikleri birleştirme başlamadan önceki orijinal durumuna döndürür.
git merge --abort
Git reset genellikle birleştirme sırasında, çakışan dosyaları özgün durumlarına döndürmek için kullanılır.
git reset
Silinmiş-değiştirilmiş dosya çakışmalarını çözme
Geçerli dalda bir dosyayı silip başka bir dalda birinin o dosyayı değiştirmesi durumunda Git çakışması oluşur. Bu durumda ya dosyayı ekleyip commit edebilirsiniz,
git add <filename>
ya da dosyayı kaldırıp commit edebilirsiniz.
git rm <filename>
📌 Git birleştirme çakışması çözüm kılavuzu (cheat sheet)
| Komut | Açıklama | Örnek Kullanım |
|---|---|---|
git status | Birleştirme çakışması olan dosyaları gösterir | git status |
git diff | Commit’ler veya dallar arasındaki farkları görüntüler | git diff HEAD |
git log --merge | Çakışmaya dahil commit’leri gösterir | git log --merge |
git merge --abort | Birleştirmeyi iptal eder ve önceki duruma döndürür | git merge --abort |
git reset --hard HEAD | Dalı son commit edilen duruma sıfırlar | git reset --hard HEAD |
git checkout -- <filename> | Belirli bir dosyadaki değişiklikleri atar | git checkout -- README.md |
git mergetool | Çakışma çözümü için yapılandırılmış bir birleştirme aracını açar | git mergetool |
git add <filename> | Düzenlemeden sonra bir çakışmayı çözüldü olarak işaretler | git add README.md |
git commit -m "<message>" | Birleştirme çakışmasından sonra çözülen değişiklikleri kaydeder | git commit -m "Resolved merge conflict" |
git rebase --continue | Çakışmalar çözüldükten sonra yarım kalan rebase’e devam eder | git rebase --continue |
git rm <filename> | Bir dalda silinmiş, diğerinde değiştirilmiş bir dosyayı kaldırır | git rm README.md |
git push | Birleştirme çakışmalarını çözdükten sonra değişiklikleri push eder | git push origin main |
Görsel Birleştirme Araçları
Birleştirme araçları, her tür çakışmayı tanımlayıp çözmek için kullanıcı dostu görsel araçlardır. Bazı araçlar, değişiklikleri karşılaştırma, Git işlemleri ve proje/depo yönetimi gibi ek yetenekler de sunar. İki tür Git birleştirme aracı vardır: yalnızca terminal ve GUI tabanlı. Terminal tabanlı araçlar PowerShell veya Bash içinde açılır, GUI tabanlı araçlar pencereli bir ortamda açılır.
Yüklü ve geçerli araçların listesini kontrol etmek için şunu kullanın:
git mergetool --tool-help
Liste, git komutlarıyla kurulup entegre edilebilen tüm geçerli araçlardan oluşur.
Örneğin, varsayılan olarak vim ve nvim yüklüdür; commit edilmemiş bir dosya ile önceki bir commit arasındaki farkı görmek istiyorsanız şunu yazın:
git difftool --tool=vimdiff3
vimdiff3 aracı değişiklikleri vurgular ve commit’leri terminal içinde karşılaştırmanıza olanak tanır.

vimdiff3’te aynı dosyanın iki sürümü arasındaki fark
Meld
Meld, birleştirme çakışmalarını çözmeyi bir üst seviyeye taşıyan, ücretsiz ve açık kaynaklı bir araçtır. Git ile entegre etmek için önce resmi siteden indirip kurulumu yapmanız gerekir. Ardından küresel yapılandırmaya ekleyin; böylece Git, varsayılan olarak çakışmaları çözmek için Meld’i başlatacaktır.
Aşağıdaki yapılandırma komutları yalnızca Windows kullanıcıları için geçerlidir. Mac veya Linux için yapmanız gereken tek değişiklik, kurulu Meld dosyasının yolunu değiştirmektir.
git config --global merge.tool meld
git config --global mergetool.meld.path "C:/Program Files (x86)/Meld/Meld.exe"
git config --global diff.tool meld
git config --global difftool.meld.path "C:/Program Files (x86)/Meld/Meld.exe"
Varsayılanları ayarladıktan sonra, Git yerel dizini içinde git difftool yazarak Windows sürümü Meld’i başlatabilir veya aşağıda gösterildiği gibi çakışmaları çözmek için git mergetool kullanabilirsiniz.

Meld ile birleştirme çakışmasını çözme
VSCode
VSCode, birleştirme çakışmalarını çözmek için en iyi ve en popüler yöntemlerden birini sunar. Git dosyaları otomatik olarak birleştirmeyi başaramadığında VSCode çakışan kodu vurgular ve size dört seçenek sunar: mevcut değişiklikleri kabul et (accept current), gelen değişiklikleri kabul et (accept incoming), her ikisini kabul et ve değişiklikleri karşılaştır. Bu seçenekleri kullanarak dosyanızı temizleyebilir ve bekleyen tüm sorunları çözebilirsiniz.

VSCode ile birleştirme çakışmasını çözme
Git işlemleriniz için eksiksiz bir çözüm arıyorsanız GitKraken’i deneyin. Ücretsiz bir istemci, VSCode uzantısı ile gelir ve birleştirme çakışmalarını çözmek için yerleşik bir araç sunar.
Git Birleştirme Çakışması Nasıl Çözülür
Bu bölümde, bir Git birleştirme çakışmasını nasıl oluşturacağımızı ve sonra nasıl çözeceğimizi öğreneceğiz. Eğitim iki kısımdan oluşuyor. İlk kısımda Git çakışmalarını yerelde çözmeyi öğreneceğiz; ikinci kısımda uzak sunucuyla (GitHub) çakışmaları çözmeyi ele alacağız.
Yerel birleştirme çakışması
Birleştirme çakışmaları oluşturmak, bu sorunların ilk etapta nasıl ortaya çıktığını öğrenmemize yardımcı olur. Böylece bu problemleri yaratıcı yollarla çözebilir veya gelecekte oluşmalarını engelleyebiliriz.
Şimdi tek dosyalı bir Git deposu oluşturup başlamak için ilk commit’imizi yapacağız.
- datacamp adlı bir klasör oluşturun.
- Dizini datacamp’e değiştirin.
- Git’i başlatın.
README.mddosyasını verilen başlıkla oluşturun.- Dosyadaki değişiklikleri hazırlayıp commit edin.
mkdir datacamp
cd datacamp
git init
echo "# How to Resolve Git Merge Conflict" > README.md
git add README.md
git commit -m "first commit"
>>> [main (root-commit) 8199ea2] first commit
>>> 1 file changed, 1 insertion(+)
>>> create mode 100644 README.md
Sonra readme adlı yeni bir dal oluşturacak ve başlığı “..Git Merge..” ifadesinden “..Git..” ifadesine çevireceğiz. Dosyayı ekleyin ve -am argümanını kullanarak commit oluşturun.
git checkout -b readme
echo "# How to Resolve Git Conflict" > README.md
git commit -am "new branch conflict added"
>>> [readme 155f694] new branch conflict added
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
Ana dala geri dönün ve README.md dosyasına >> kullanarak yeni bir satır ekleyin. Değişiklikleri kaydedip commit oluşturarak aynı dosyanın iki sürümü arasında başarıyla bir çakışma oluşturmuş olduk.
git checkout main
echo "New change in base branch" >> README.md
git commit -am " a line added to base branch Readme file"
>>> [main f1f1874] a line added to base branch Readme file
>>> 1 file changed, 1 insertion(+)
Görüldüğü gibi readme dalını birleştirirken Git, otomatik birleştirmenin başarısız olduğunu ve sonucu commit etmeden önce değişiklikleri el ile yapmamız gerektiğini belirten bir mesaj gösterdi.
git merge readme
>>> Auto-merging README.md
>>> CONFLICT (content): Merge conflict in README.md
>>> Automatic merge failed; fix conflicts and then commit the result.
Notepad’de dosyayı açıp düzenleyerek sorunu el ile çözeceğiz. Aşağıdaki görselde HEAD ile gösterilen ok, bir ayırıcı ve farklı yönde okla readme görünüyor. HEAD bölümü ana daldaki mevcut değişiklikleri, readme bölümü ise birleştirmek istediğimiz ve farklı bir başlık içeren dalı gösterir.
Birleştirme çakışmasını el ile çözme
Problemi çözmek için readme dalına ait kısmı, okları ve ayırıcıyı kaldıracağız. Dosyanın son hali aşağıda gösterildiği gibi temiz görünmelidir.

Çakışma çözüldü
Dosyayı ekleyip commit ettikten sonra birleştirme çakışması çözülecektir. Bu, sorunları çözmenin en yaygın ve en basit yoludur. Sorunları daha hızlı çözmek için tümleşik geliştirme ortamı (IDE) da kullanabilirsiniz.
git commit -am "conflict resolved in file README.md"
>>> [main 9994a29] conflict resolved in file README.md
Uzak depo birleştirme çakışması
Uzak birleştirme çakışmaları oluşturup çözmek için GitHub’da yeni bir depo oluşturmamız gerekiyor.

GitHub’da yeni depo oluşturma
Ardından uzak adı (origin) ile adresi depoya ekleyin ve yerel depodaki tüm değişiklikleri upstream kullanarak uzak main dalına push edin.
git remote add origin https://github.com/kingabzpro/DataCamp-Git-Merge-Guide.git
git push --set-upstream origin main
>>> Enumerating objects: 12, done.
>>> Counting objects: 100% (12/12), done.
>>> Delta compression using up to 4 threads
>>> Compressing objects: 100% (6/6), done.
>>> Writing objects: 100% (12/12), 998 bytes | 499.00 KiB/s, done.
>>> Total 12 (delta 2), reused 0 (delta 0), pack-reused 0
>>> remote: Resolving deltas: 100% (2/2), done.
>>> To https://github.com/kingabzpro/DataCamp-Git-Merge-Guide.git
>>> * [new branch] main -> main
>>> branch 'main' set up to track 'origin/main'.
Bir çakışma oluşturmak için uzak ve yerel README.md dosyasında değişiklik yapmamız gerekir. GitHub dosya düzenleyicisini kullanarak “..Git merge..” ifadesini “..Sit-Merge..” olarak değiştirebilir ve ardından değişiklikleri commit edebilirsiniz.

GitHub düzenleyicide değişiklik yapma
Ardından yerel depoda, README.md dosyasını yalnızca basit bir başlık ekleyecek şekilde değiştirin ve değişiklikleri commit edin.
echo "# How to Resolve Merge Conflicts in Git Tutorial" > README.md
git commit -am "local branch changes in README.md"
>>> [main c677a13] local branch changes in README.md
>>> 1 file changed, 1 insertion(+), 4 deletions(-)
Son olarak değişiklikleri uzak sunucuya push edin. Git’in, sorunu nasıl gidereceğinize dair ipuçlarıyla birlikte bir hata verdiğine dikkat edin.
git push
>>> To https://github.com/kingabzpro/DataCamp-Git-Merge-Guide.git
>>> ! [rejected] main -> main (fetch first)
>>> error: failed to push some refs to 'https://github.com/kingabzpro/DataCamp-Git-Merge-Guide.git'
>>> hint: Updates were rejected because the remote contains work that you do
>>> hint: not have locally. This is usually caused by another repository pushing
>>> hint: to the same ref. You may want to first integrate the remote changes
>>> hint: (e.g., 'git pull ...') before pushing again.
>>> hint: See the 'Note about fast-forwards' in 'git push --help' for details.
En basit ipucunu izleyeceğiz: push etmeden önce dosyayı uzak sunucudan pull etmek.
README.md dosyasında birleştirme çakışması nedeniyle pull işlemi başarısız oldu. Bunu Notepad ile el ile düzeltebilirdik; ancak bu kez bize yardımcı olması için görsel bir araç kullanacağız.
git pull
>>> remote: Enumerating objects: 5, done.
>>> remote: Counting objects: 100% (5/5), done.
>>> remote: Compressing objects: 100% (2/2), done.
>>> remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
>>> Unpacking objects: 100% (3/3), 681 bytes | 75.00 KiB/s, done.
>>> From https://github.com/kingabzpro/DataCamp-Git-Merge-Guide
>>> aaf149d..49b7d14 main -> origin/main
>>> Auto-merging README.md
>>> CONFLICT (content): Merge conflict in README.md
>>> Automatic merge failed; fix conflicts and then commit the result.
Birleştirme aracı Meld, çakışan dosyaları belirleyecek ve bunları Meld GUI uygulamasında gösterecektir.
git mergetool
>>> Merging:
>>> README.md
>>> Normal merge conflict for 'README.md':
>>> {local}: modified file
>>> {remote}: modified file
Üç sütun vardır: README_LOCAL_473.md, README.md ve README_LOCAL_473.md. Uzak değişikliklerin geçerli olduğunu düşünüyorsanız uzak sütundaki siyah oka; yerel değişikliklerin kalmasını istiyorsanız yerel sütundaki siyah oka tıklayın. Bu kadar basit.

Birleştirme aracı Meld kullanılarak çakışma çözüldü
Değişiklikleri yaptıktan sonra dosyayı kaydedip commit edin. Görüldüğü gibi, dosyayı uzak sunucuya push etmek birleştirme çakışması hatası üretmiyor.
git commit -am "remote main branch conflict resolved"
git push
>>> Enumerating objects: 16, done.
>>> Counting objects: 100% (16/16), done.
>>> Delta compression using up to 4 threads
>>> Compressing objects: 100% (6/6), done.
>>> Writing objects: 100% (10/10), 1.08 KiB | 550.00 KiB/s, done.
>>> Total 10 (delta 2), reused 0 (delta 0), pack-reused 0
>>> remote: Resolving deltas: 100% (2/2), completed with 1 local object.
>>> To https://github.com/kingabzpro/DataCamp-Git-Merge-Guide.git
>>> 49b7d14..8f5c3aa main -> main
Hem yerel hem de uzak birleştirme çakışmalarını başarıyla çözdük. Bu çakışmalarla veri bilimciler ve makine öğrenimi mühendisleri günlük olarak karşılaşır. Git işlemlerindeki becerilerinizi geliştirmek için Introduction to Git kursunu alın.
Sonuç
Git birleştirme çakışmalarını çözmek, hatalı kodu birleştirerek yazılımı bozabileceğiniz için karmaşık ve oldukça riskli bir görevdir. Birleştirme araçları, çakışmaları tespit edip çözmek için daha güvenli, kullanıcı dostu bir ortam sağlar. Bu eğitimde Git çakışmalarının neden oluştuğunu ve nasıl çözüleceğini öğrendik. Ayrıca çeşitli birleştirme ve çakışma türlerini, yararlı Git komutlarını ve görsel araçları ele aldık. Son bölümde ise yerel ve uzak depoda bir çakışma oluşturup çözdük.
Git’te yeniyseniz ve nasıl çalıştığını öğrenmek istiyorsanız şunu okuyun: Intro to Git and GitHub Tutorial.
Sertifikalı bir veri bilimcisi olarak, yenilikçi makine öğrenimi uygulamaları oluşturmak için en son teknolojileri kullanmaya büyük ilgi duyuyorum. Konuşma tanıma, veri analizi ve raporlama, MLOps, konuşma yapay zekası ve NLP alanlarında güçlü bir geçmişe sahip olarak, gerçek bir etki yaratabilecek akıllı sistemler geliştirme becerilerimi geliştirdim. Teknik uzmanlığımın yanı sıra, karmaşık kavramları açık ve özlü bir dille ifade etme yeteneğine sahip, becerikli bir iletişimciyim. Sonuç olarak, veri bilimi konusunda aranan bir blog yazarı oldum ve giderek büyüyen veri profesyonelleri topluluğuyla görüşlerimi ve deneyimlerimi paylaşıyorum. Şu anda, içerik oluşturma ve düzenlemeye odaklanıyorum. Büyük dil modelleriyle çalışarak, hem işletmelerin hem de bireylerin verilerinden en iyi şekilde yararlanmalarına yardımcı olabilecek güçlü ve ilgi çekici içerikler geliştiriyorum.
SSS
Git birleştirme çakışmalarını önlemek için en iyi uygulamalar nelerdir?
Çakışma riskini azaltmak için:
- Yeni işe başlamadan önce daima en son değişiklikleri çekin (
git pull origin main). - Aynı kod satırları üzerinde çalışmayı önlemek için ekibinizle iletişim kurun.
- Küçük ve sık commit’ler yapın; büyük ve karmaşık olanlardan kaçının.
- Özellik dalları (feature branches) kullanın; doğrudan
main’e commit etmeyin. - Olası çakışmaları erkenden görmek için birleştirmeden önce
git diffçalıştırın.
Terminal kullanmadan çakışmaları çözebilir miyim?
Evet! Birçok GUI tabanlı Git aracı çakışma çözümünü kolaylaştırır:
- VS Code: Çakışmaları "Accept Incoming" ve "Accept Current" seçenekleriyle vurgular.
- GitKraken: Çakışmaları etkileşimli biçimde çözmek için görsel bir arayüz sağlar.
- Meld / Beyond Compare: Farkları görsel olarak karşılaştırıp çözmeye yardımcı olan birleştirme araçlarıdır. Yapılandırılmış bir görsel aracı kullanmak için
git mergetoolçalıştırın.
Çakışmaları çözdükten sonra bile neden tekrar tekrar çakışma alıyorum?
Olası nedenler şunlardır:
- Çözülen dosyaları hazırlamayı (
git add) ve commit etmeyi (git commit -m "Resolved conflict") unuttunuz. - Siz çözdükten sonra başka bir ekip üyesi yeni çakışan değişiklikler push etmiş olabilir.
git pull --rebasedeneyin. - Çözülen değişiklikleri push etmeden yeniden birleştirmeye çalıştınız. Çakışmaları çözdükten sonra her zaman
git pushçalıştırın.
Yanlışlıkla birleştirmeyi iptal edersem (git merge --abort) ne yapmalıyım?
Bir birleştirmeyi iptal ettiyseniz ve yeniden denemek istiyorsanız şunları yapabilirsiniz:
- Basitçe birleştirme komutunu yeniden çalıştırın (
git merge <branch-name>). - İptalden önceki önceki durumu görmek için
git reflogkullanın ve gerekirse geri yükleyin.
Birleştirme çakışmasını çözerken yaptığım hatayı nasıl geri alırım?
Çakışma çözümünde hata yaptıysanız:
git reset --hard HEADçalıştırarak tüm değişiklikleri atıp yeniden başlayın.git checkout -- <filename>kullanarak belirli dosyaları özgün hâline döndürün.- Hata zaten commit edildiyse, değişiklikleri geri almak için yeni bir commit oluşturacak
git revert <commit-hash>kullanın.
İkili dosyalardaki birleştirme çakışmasını nasıl çözerim?
Git, ikili dosyaları otomatik olarak birleştiremez (ör. görseller, PDF’ler). Çözmek için:
- Hangi sürümün korunacağına el ile karar verip dosyayı değiştirin.
git checkout --theirs <filename>veyagit checkout --ours <filename>ile tek bir sürümü koruyun.- Çözülen dosyayı commit edin (
git add <filename> && git commit -m "Resolved binary file conflict").
git merge --abort ile git reset --merge arasındaki fark nedir?
git merge --abort: Bir birleştirmeyi güvenle geri alır ve dalı birleştirme öncesindeki durumuna döndürür.git reset --merge: Benzer, fakat hazırlanmış dosyaları korur; belirli değişiklikleri tutmak istiyorsanız daha kullanışlı olabilir.
GitHub’a push ederken birleştirme çakışmasını nasıl çözerim?
git push bir birleştirme çakışması hatası ile başarısız olursa şunları deneyin:
- En son değişiklikleri çekin:
git pull origin main --rebase - Çakışmaları el ile çözün yerel dalınızda.
- Dosyaları hazırlayıp commit edin:
git add <conflicted-file>
git commit -m "Resolved merge conflict"
- Yeniden push edin:
git push origin main
Rebase çakışması nedir, nasıl düzeltirim?
Rebase çakışması, git rebase <branch> çalıştırıldığında ve değişiklikler temiz şekilde uygulanamadığında oluşur. Çözmek için:
- Çakışmaları el ile çözün, ardından
git rebase --continueçalıştırın. - Rebase’i iptal etmek isterseniz
git rebase --abortkullanın. - Çakışan commit’i yok saymak isterseniz
git rebase --skipkullanın.
Git ayarlarını kullanarak dalları çakışmasız birleştirebilir miyim?
Git’in bazen yardımcı olan bir otomatik birleştirme stratejisi vardır:
git merge -X theirs <branch>kullanarak her zaman diğer dalın değişikliklerini kabul edin.git merge -X ours <branch>kullanarak her zaman kendi dalınızın değişikliklerini koruyun. Ancak bu kusursuz değildir ve dikkatli kullanılmalıdır.


Git Birleştirme (Merge) Çakışması Nedir?
Git sürüm kontrol sistemi, ekip olarak çalışıp projelere katkıda bulunmakla ilgilidir. Geliştiriciler genellikle izole dallarda çalışır ve işlerini bitirdiklerinde değişiklikleri ana dal ile birleştirirler. Bu tür ekip çalışması oldukça üretken olup hataları bulmada etkilidir. Bazen birden fazla geliştirici aynı kod satırı üzerinde çalışır ve değişiklikleri birleştirmeye çalıştıklarında çakışmalar ortaya çıkar.
Basit bir Git çakışması örneği
Yukarıdaki diyagram, tipik bir Git birleştirme çakışmasının nasıl meydana geldiğine dair kusursuz bir örnek sunar. Ana dalda “HELLO, WORLD!” metnini içeren bir dosya vardır. abid adlı kullanıcı ana dalı çatallar (fork) ve metni “HELLO, CAT!” olarak değiştirir. abid değişiklik yaparken özgün ana dal da “HELLO, DOG!” olacak şekilde değiştirilir. Bu dalları birleştirmek, birleştirme çakışması uyarısı verir ve süreci durdurur.
git mergekomutunun birincil görevi iki dalı birleştirip çakışmaları otomatik olarak çözmektir. Ancak zaman zaman iki kişinin aynı kod satırını değiştirmesi veya başka bir geliştiricinin üzerinde çalıştığı kritik dosyaların kaldırılması gibi durumlarda çakışmalar ortaya çıkar. Git bu değişiklikleri işaretler ve birleştirme sürecini durdurur. Bu durumda çakışma otomatik olarak çözülmemiştir; geliştiricinin el ile değişiklik yapması veya çakışmayı çözmek için araçlar kullanması gerekir.