Ş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_branch
taahhüt master
etmeden 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
master
Nihayetinde bunu yapmanız gerekeceğinden, şubenizle birleşerek başlayın ve şimdi herhangi bir çatışmayı çözmek için en iyi zaman.
-u
Seçeneği (aka --include-untracked
olarak) git stash -u
daha sonra ne zaman izlenmeyen dosyaları kaybetme gelen önler sen git clean -f -d
içinde master
.
Sonra git checkout master
bu YAPMAK önemlidir git stash pop
, çünkü daha sonra bu zulası ihtiyacınız olacak. Eğer oluşturduğunuz zulası pop ederse my_branch
ve sonra yapmak git stash
içinde master
, size daha sonra o zulası uygulamak gereksiz birleştirme çakışmaları neden olacaktır my_branch
.
git reset
sonuç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 -d
taahhü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 master
geri dönerken gereksiz birleşme çakışmalarına neden olurlar my_branch
.
Sonuncusu git stash pop
orijinaline my_branch
dayanacaktı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
.