Şu anda olan şey, daha önce birleştirmeyi denediğiniz belirli bir dosya grubunuz olması, ancak birleştirme çakışmaları oluşturmasıdır. İdeal olarak, bir birleşme çatışması olursa, bunları manuel olarak çözmeli ve değişiklikleri kullanarakgit add file.name && git commit -m "removed merge conflicts"
. Şimdi, başka bir kullanıcı, söz konusu dosyaları deposunda güncelledi ve değişikliklerini ortak yukarı akış deposuna aktardı.
Öyle ki, birleştirme çakışmalarınız (muhtemelen) son taahhütten çözülmedi, bu nedenle dosyalarınız düzgün bir şekilde birleştirilmedi ve dolayısıyla dosyalar için U
( unmerged
) bayrağı. Şimdi, bir yaptığınızda git pull
, git hatayı atıyor, çünkü dosyanın doğru bir şekilde çözülmemiş bazı sürümüne sahipsiniz.
Bu sorunu çözmek için, söz konusu birleştirme çakışmalarını çözmeniz ve bir değişiklik yapmadan önce değişiklikleri eklemeniz ve uygulamanız gerekir. git pull
.
Sorunun örnek üretimi ve çözümü:
# Note: commands below in format `CUURENT_WORKING_DIRECTORY $ command params`
Desktop $ cd test
Önce depo yapısını oluşturalım
test $ mkdir repo && cd repo && git init && touch file && git add file && git commit -m "msg"
repo $ cd .. && git clone repo repo_clone && cd repo_clone
repo_clone $ echo "text2" >> file && git add file && git commit -m "msg" && cd ../repo
repo $ echo "text1" >> file && git add file && git commit -m "msg" && cd ../repo_clone
Şimdi repo_clone'dayız ve eğer yaparsanız git pull
, çatışmalara yol açar
repo_clone $ git pull origin master
remote: Counting objects: 5, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /home/anshulgoyal/Desktop/test/test/repo
* branch master -> FETCH_HEAD
24d5b2e..1a1aa70 master -> origin/master
Auto-merging file
CONFLICT (content): Merge conflict in file
Automatic merge failed; fix conflicts and then commit the result.
Klondaki çatışmaları görmezden gelirsek ve şimdi orijinal repoda daha fazla taahhütte bulunursak,
repo_clone $ cd ../repo
repo $ echo "text1" >> file && git add file && git commit -m "msg" && cd ../repo_clone
Sonra da yok git pull
, biz olsun
repo_clone $ git pull
U file
Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>'
as appropriate to mark resolution, or use 'git commit -a'.
Not file
şimdi birleştirilmemiş bir durumda ve biz yaparsak git status
, biz açıkça aynı görebilirsiniz:
repo_clone $ git status
On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 1 different commit each, respectively.
(use "git pull" to merge the remote branch into yours)
You have unmerged paths.
(fix conflicts and run "git commit")
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: file
Bu nedenle, bunu çözmek için önce daha önce görmezden geldiğimiz birleştirme çakışmasını çözmemiz gerekiyor
repo_clone $ vi file
ve içeriğini
text2
text1
text1
sonra ekleyin ve değişiklikleri uygulayın
repo_clone $ git add file && git commit -m "resolved merge conflicts"
[master 39c3ba1] resolved merge conflicts