Visual Studio Code git ile birleştirme çakışmalarını nasıl çözebilirim?


122

Şubemi başka bir şubeyle birleştirmeye çalıştım ve birleşme çatışması oldu. Visual Studio Code'da (sürüm 1.2.1) tüm sorunları çözdüm, ancak işlemeye çalıştığımda bana şu mesajı vermeye devam ediyor:

Değişikliklerinizi uygulamadan önce ilk olarak birleştirilmemiş değişiklikleri çözmelisiniz.

Googling'i denedim ama neden değişikliklerimi yapmama izin vermediğini bulamıyorum, tüm çatışmalar ortadan kalktı.


1
Söyledikleriniz doğru olsa da, sorudaki sorunu çözmüyor. Sorudaki tüm birleştirme çatışmalarını zaten çözdüğümü açıkça belirttim.
annedroiid

Yanıtlar:


123

VSCode ile birleştirme çakışmalarını aşağıdaki kullanıcı arayüzü ile kolayca bulabilirsiniz. görüntü açıklamasını buraya girin

(üst çubuğunuz yoksa, "editor.codeLens": trueKullanıcı Tercihlerinde ayarlayın )

Sahip olduğunuz mevcut değişikliği ve sunucudan gelen değişikliği gösterir. Bu, çakışmaları çözmeyi kolaylaştırır - sadece yukarıdaki düğmelere basmanız yeterlidir <<<< HEAD.

Birden fazla değişikliğiniz varsa ve hepsini aynı anda uygulamak istiyorsanız - komut paletini açın (Görünüm -> Komut Paleti) ve birleştirme yazmaya başlayın - Merge Conflict: Accept Incomingvb. Dahil olmak üzere birden fazla seçenek görünecektir .


1
en son güncellemeyi aldın mı? her satırda göstereceğim
Sajeetharan


1
Bu birleştirme nasıl elde edilir, görsel stüdyo kodundaki çatışma seçeneklerini çözer.
user630209

1
herhangi bir kısayol nasıl etkinleştirilir? Çakışma dosyamda bu seçeneği göremiyorum.
user630209

1
@RyeGuy Bu seçenekler CodeLens aracılığıyla gösterilir, dolayısıyla CodeLens'in etkinleştirilmesi gerekir (bkz. Code.visualstudio.com/Docs/editor/… ).
Geri Borbás

84

Deneme yanılma işleminden sonra, birleştirme çakışması olan dosyayı hazırlamanız gerektiğini keşfettim, sonra birleştirmeyi gerçekleştirebilirsiniz.


1
Evet doğru. İster birleştirme çatışması olsun, isterse zorlamaya çalıştığınız yerel taahhüdünüz, bu taahhüdü zorlayabilmeniz için önce aşamalandırılmalıdır.
surendrapanday

1
Kafası karışan git add .tüm dosyaları hazırlamazsa, projenin kök dizininde olup olmadığınızı kontrol edin. Bunu anlamam bir ara aldı. Sonra git add .tüm dosyaları git merge --continue
hazırladım

1
Ve birleştirme çakışmasını çözdükten sonra, birleştirilmiş değişiklikleri aşamalandırmadan önce çakışan dosyayı KAYDETMELİSİNİZ.
nclark

@nclark, gelen dosyaları kabul ettikten sonra otomatik olarak kaydetmenin bir yolunu buldunuz mu?
jackhowa

22
  1. Soldaki "Kaynak Kontrolü" düğmesine tıklayın.
  2. Kenar çubuğundaki DEĞİŞİKLİKLERİ BİRLEŞTİR konusuna bakın.
  3. Bu dosyalarda birleştirme çakışmaları var.

VS Kodu> Kaynak Kontrolü> Değişiklikleri Birleştir (Örnek)


1
Eskiden "Mevcut Değişikliği Kabul Et | Gelen Değişikliği Kabul Et ..." seçeneklerim vardı ama şimdi bu seçenekler satırdan kayboldu, bu seçeneklerin nasıl tekrar ortaya çıkarılacağı hakkında bir fikriniz var mı?
jet_choong

1
Bu, kullanıcı arayüzünden çok kolay. Kenar çubuğundaki Değişiklikleri Birleştir bölümüne işaret ettiğiniz için teşekkür ederiz .
klewis

22

"Birleştirme düğmelerini" bulmakta zorlananlar için.

Birleştirme seçeneklerine sahip küçük ampul simgesi yalnızca "birleştirme çakışma işaretçisini" tam olarak tıklarsanız görünür

<<<<<<<

Adımlar (VS Code 1.29.x'te):


15

Aldığınız hata mesajı, Git'in hala birleştirme çakışmalarını çözemediğinizi düşünmesinin bir sonucudur. Aslında, zaten yaptınız, ancak Git'e çözümlenmiş dosyaları dizine ekleyerek bunu yaptığınızı söylemeniz gerekiyor .

Bu aslında sadece dosya eklemek verebilecek yan etkisi yoktur olmadan çatışmaları çözme ve Git hala var olduğunu düşünürdüm. Bu nedenle, çatışmaları gerçekten çözdüğünüzden emin olmak için gayretli olmalısınız. Oluşturmayı çalıştırıp kodu işlemeden önce bile test edebilirsiniz.


4

VS Code 1.38 için veya herhangi bir "ampul" düğmesi bulamadıysanız. Çatışmaların üstündeki grileşmiş metne çok dikkat edin; yapabileceğiniz işlemlerin bir listesi var.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.