Şimdiye kadar verilen cevaplar ideal değil çünkü birleşme çatışmalarını çözmek için çok fazla gereksiz çalışmaya ihtiyaç duyuyorlar ya da sıklıkla yanlış olan çok fazla varsayım yapıyorlar. Mükemmel şekilde bu şekilde yapılır. Bağlantı kendi siteme ait.
Tüm değişiklikleri my_branchtaahhüt masteretmeden taahhüt etmek istediğiniz taahhüt edilmemiş değişiklikleriniz var my_branch.
Misal
git merge master
git stash -u
git checkout master
git stash apply
git reset
git add example.js
git commit
git checkout .
git clean -f -d
git checkout my_branch
git merge master
git stash pop
açıklama
masterNihayetinde bunu yapmanız gerekeceğinden, şubenizle birleşerek başlayın ve şimdi herhangi bir çatışmayı çözmek için en iyi zaman.
-uSeçeneği (aka --include-untrackedolarak) git stash -udaha sonra ne zaman izlenmeyen dosyaları kaybetme gelen önler sen git clean -f -diçinde master.
Sonra git checkout masterbu YAPMAK önemlidir git stash pop, çünkü daha sonra bu zulası ihtiyacınız olacak. Eğer oluşturduğunuz zulası pop ederse my_branchve sonra yapmak git stashiçinde master, size daha sonra o zulası uygulamak gereksiz birleştirme çakışmaları neden olacaktır my_branch.
git resetsonuçta ortaya çıkan herşey git stash apply. Örneğin, depoda değiştirilen ancak master"bizim tarafımızdan silindi" çatışmaları içinde hazırlanmayan dosyalar çakışıyor.
git checkout .ve git clean -f -dtaahhüt edilmeyen her şeyi atın: izlenen dosyalarda yapılan tüm değişiklikler ve izlenmeyen tüm dosya ve dizinler. Zaten saklanmış durumdadırlar ve eğer bırakılırlarsa mastergeri dönerken gereksiz birleşme çakışmalarına neden olurlar my_branch.
Sonuncusu git stash poporijinaline my_branchdayanacaktır ve bu nedenle herhangi bir birleşme çatışmasına neden olmayacaktır. Ancak, stash'ınızda master işlemi gerçekleştirdiğiniz izlenmemiş dosyalar varsa, git "Izlenmemiş dosyalar stash'tan geri yüklenemedi" şeklinde şikayet edecektir. Bu uyuşmazlığı gidermek için, çalışma ağacın ardından gelen bu dosyaları silmek git stash pop, git add .ve git reset.