Git'e yerel dosyamı yoksaymasını ve birleştirmeye ve çakışmaya neden olmadan uzak şubemden dosyayı almasını nasıl söyleyebilirim?
Git'e yerel dosyamı yoksaymasını ve birleştirmeye ve çakışmaya neden olmadan uzak şubemden dosyayı almasını nasıl söyleyebilirim?
Yanıtlar:
Bu en güvenli çözümdür:
git stash
Artık çatışma korkusu olmadan istediğinizi yapabilirsiniz.
Örneğin:
git checkout origin/master
Uzaktan değişiklikleri ana şubeye dahil etmek isterseniz şunları yapabilirsiniz:
git reset --hard origin/master
Bu, "orijin / master" ı işaret etmek için dalınızı "master" yapar.
git stash; git fetch origin; git reset --hard origin/master
git stash? git stash listboş.
Soruyu şu şekilde anlıyorum: yukarıdan bir dosyanın (veya seçimin) içeriğini tamamen değiştirmek istiyorsunuz. Dizini doğrudan etkilemek istemezsiniz (bu nedenle her zamanki gibi add + commit'i kullanırsınız).
Basitçe yapın
git checkout remote/branch -- a/file b/another/file
Bunu kapsamlı alt ağaçlar için yapmak ve bunun yerine doğrudan dizini etkilemek istiyorsanız
git read-tree remote/branch:subdir/
Daha sonra (isteğe bağlı olarak) çalışma kopyanızı
git checkout-index -u --force
Anladığım kadarıyla, örneğin, yalnızca test amacıyla güncellediğiniz bir dosyayı yanlış kaydettiğinizdir. Ardından, "git status" komutunu çalıştırdığınızda dosya "Değiştirildi" olarak görünür ve bazı kötü sözcükler söylersiniz. Sadece eski sürümü geri istiyorsun ve normal çalışmaya devam ediyorsun.
Bu senaryoda sadece aşağıdaki komutu çalıştırabilirsiniz:
git checkout -- path/filename
Ben böyle "ana" (uzak / kökeni deposu) uzak dosya ödeme olurdu:
git checkout master <FileWithPath>
Örnek: git checkout ana bileşenleri / indexTest.html
Kullanın -sveya --strategykombine seçeneği -Xseçeneği. Özel sorunuzda, tüm uzak dosyaları tutmak ve aynı addaki yerel dosyaları değiştirmek istiyorsunuz.
Uzak sürümle çakışmaları değiştirme
git merge -s recursive -Xtheirs upstream/master
çakışan tüm dosyaların uzak repo sürümünü kullanacaktır.
Çakışmaları yerel sürümle değiştirin
git merge -s recursive -Xours upstream/master
çakışan tüm dosyaların yerel repo sürümünü kullanacaktır.
git merge -s their