Bunun yerine yeni bir git merge
dosya izlenmeyen dosyaların üzerine yazılır
Aşağıdaki yorumlar, 'ilgilenilen dosyalar' için 'FOI' kullanır;
- donör dalında var,
- alıcı dalda mevcut değil,
- ve birleştirme işlemini engelliyorlar, çünkü bunlar çalışma dizininizde mevcut ve izlenmemiş.
git checkout -f donor-branch # replace FOI with tracked `donor` versions
git checkout receiving-branch # FOI are not in `receiving`, so they disapppear
git merge donor-branch # now the merge works
Bunun yerine yeni bir git pull
dosya izlenmeyen dosyaların üzerine yazılır
pull = fetch + merge
, bu yüzden yukarıdaki hileyi git fetch
takip ediyoruz git checkout -f, git checkout, git merge
.
git fetch origin # fetch remote commits
git checkout -f origin/mybranch # replace FOI with tracked upstream versions
git checkout mybranch # FOI are not in mybranch, so they disapppear
git merge origin/mybranch # Now the merge works. fetch + merge completes the pull.
Detaylı açıklama
git merge -f
yok ama git checkout -f
var.
İlgilenilen Dosyaları kaldırmak için git checkout -f
+ işaretini kullanacağız git checkout
(yukarıya bakın) ve birleştirme işleminiz normal şekilde devam edebilir.
Adım 1. Bu adım, izlenmeyen FOI'yı donör dalının izlenen sürümleriyle zorla değiştirir (ayrıca donör dalını kontrol eder ve çalışma direktörünün geri kalanını günceller).
git checkout -f donor-branch
Adım 2. Bu adım FOI'yi kaldırır, çünkü bunlar mevcut (donör) şubemizde takip edilirler ve receiving-branch
geçiş yaptığımızda yoktur .
git checkout receiving-branch
Adım 3. Artık FOI yok olduğuna göre, donör dalında birleştirme izlenmemiş dosyaların üzerine yazılmaz, bu yüzden hata almayız.
git merge donor-branch