Git MergeTool için varsayılan düzenleyici olarak Visual Studio Code nasıl kullanılır?


121

Bugün kullanmaya çalışıyordu git mergetoolWindows üzerinde istemi ve kullanımı varsaymak anladı komuta Vim serin, ama tercih ediyorum VS Kodunu .

Git için birleştirme çakışmalarını (veya bir farklılaştırma aracı olarak) işlemek için GUI'm olarak Visual Studio Code işlevine nasıl sahip olabilirim ?

Yanıtlar:


240

İtibariyle Visual Studio Kod 1.13 Daha İyi Birleştirme Visual Studio Kanununun çekirdeğine entegre edilmiştir.

Bunları birbirine bağlamanın yolu, sizin .gitconfigve iki seçeneğiniz var .

  1. Komut satırı girişleriyle Bunu yapmak için, bunların her girin: (Not: yerine "ile ', Windows Git Bash, MacOS ve Linux üzerinde İztok Delfin ve e4rache tarafından açıklık gibi)

    1. git config --global merge.tool vscode
    2. git config --global mergetool.vscode.cmd "code --wait $MERGED"
    3. git config --global diff.tool vscode
    4. git config --global difftool.vscode.cmd "code --wait --diff $LOCAL $REMOTE"
  2. Bunu .gitconfig , Visual Studio Code ile bir satır yapıştırarak yapmak için .

    • git config --global core.editor "code --wait"Komut satırından çalıştırın .
    • Buradan komutu girebilirsiniz git config --global -e. Kodu aşağıdaki "Ekstra Blok" a yapıştırmak isteyeceksiniz.

      [user]
          name = EricDJohnson
          email = cool-email@neat.org
      [gui]
          recentrepo = E:/src/gitlab/App-Custom/Some-App
      # Comment: You just added this via 'git config --global core.editor "code --wait"'
      [core]
          editor = code --wait
      # Comment: Start of "Extra Block"
      # Comment: This is to unlock Visual Studio Code as your Git diff and Git merge tool
      [merge]
          tool = vscode
      [mergetool "vscode"]
          cmd = code --wait $MERGED
      [diff]
          tool = vscode
      [difftool "vscode"]
          cmd = code --wait --diff $LOCAL $REMOTE
      # Comment: End of "Extra Block"
      

Şimdi Git dizininizden bir çakışma çalıştırması ile git mergetoolve tada, birleştirme çakışmasının üstesinden gelmenize yardımcı olan Visual Studio Code'a sahipsiniz! ( Visual Studio Code'u kapatmadan önce dosyanızı kaydettiğinizden emin olun .)

Gelen Değişikliği kabul ediyor musunuz?

codeKomut satırından başlatma hakkında daha fazla bilgi almak için bu belgelere bakın .

İçinde daha fazla bilgi için git mergetoolcheck-out bu belgelerin .


3
<<<< Başlığın yukarısında şu seçenekleri listeleyen bir satır var: "Mevcut Değişikliği Kabul Et | Gelen Değişikliği Kabul Et | Her İki Değişikliği Kabul Et | Değişiklikleri Karşılaştır" ve bunun dosyada tespit edilen değişikliklerin her bir bölümüne eklendiğini düşünüyorum. . Ancak bir bölüm içinde biraz bunu ve birazını elle özel olarak birleştirmek istiyorsanız, inanıyorum ki yerelde bu değişikliği yapıp "Mevcut Değişikliği Kabul Et" seçeneğiyle devam edin. Yani iş akışı, ileriye doğru bir adım atmak için bir adım geri atmanıza neden oluyor. Başkaları bunu farklı bir şekilde
Eric D. Johnson

3
Hatayı alıyorum unknown tool: vscode... Bunun codeyerine kullanmanız gereken komut satırından VsCode'u çağıracağımdan eminimvscode
Kolob Canyon

19
Ayrıca, bu benim için çalışmıyor. Sadece VsCode'u açar ve hiçbir dosya getirilmez
Kolob Canyon

1
Yapmak istediğim şey "giff difftool mybranch master" ve VS kodunun değişen tüm dosyaların diff ile açık olmasını sağlamaktır. Şu anda sadece bir tane açacak ve kapatmanızı bekleyecekti.
Pluc

1
Oh ya, bunu biliyorum, ama aradığım esnekliğe sahip değil, iki işlem veya iki dal arasında fark bulmak gibi. Ve eğer öyleyse, git vs kod içinde gezinmek bence oldukça korkunç. Sadece farklılıklarını ve kullanıcı arayüzlerini seviyorum. Gidiyordum ve git difftool -dbir dizin farkını gördüm . Nasıl çalıştığını yarın kontrol edeceğim.
Pluc

23

Çift tırnak işaretlerini basit alıntılarla değiştirmek zorunda kaldım:

  git config --global difftool.vscode.cmd 'code --wait --diff $LOCAL $REMOTE'

düzgün çalışması için (çift tırnaklarla, $ LOCAL ve $ REMOTE değerleri değerleriyle değiştirilir).

Windows Komut İstemi yerine Windows için Git Bash kullanıyorsanız bu gereklidir .


1
Benim için değil. Bunu Komut İstemi'ni kullanarak Windows'ta yaptım. Belki farklı bir şey kullanıyorsunuz? Öyleyse, hangi ortamı kullandığınızı eklemenizi öneririm, böylece aynı ortama sahip diğer kişiler bu değişikliği yapmaları gerektiğini bilecekler.
Todesengel

1
@ e4rache ve @ Iztok-Delfin burada listeledikleriniz yararlı içeriktir, ancak gerçekten bir yorum olduğunda, yanlışlıkla bir cevap vermişsinizdir. Eminim sorunla karşılaştınız çünkü SO'da yorum yapmanıza izin verecek 50 puanınız yoktu, bu belki de incelenmesi gereken bir tür site iş akışı problemidir. Her neyse, katkıda bulunduğunuz için teşekkürler ve yukarıdaki cevabıma ipucunuzu ekledim. Daha sonra gelen ve Git Bash'i kullananlara yardım ettiğiniz için teşekkürler:^)
Eric D. Johnson

@ eric-d-johnson Bir cevap yerine tamamen bir yorum yapmak istedim. (üzgünüm, bu sitede yeniyim) ve btw linux üzerinde bash kullanıyordum. Bu yanıtı yoruma dönüştürmenin bir yolu var mı?
e4rache

@ e4rache Bunu bir yorum yapmanın bir yolunu bilmiyorum, ancak belki bir moderatör bunu görecek ve bize bazı ipuçları (ipucu, ipucu) verecektir. 50 puana sahip olsaydınız, kabul edilen cevaba bir yorum yapabilir ve bunu silebilirsiniz, böylece tonlarca puana sahip bir SO rock yıldızı olduktan sonra buraya geri gelebilir ve temizlik sizi mutlu eden ve geri getiren her şeyi yapabilirsiniz. her şeyin nasıl başladığına dair güzel anılar.
Eric D. Johnson

1
@mohamedghonemi İyi geribildirim. Şimdi macOS ve Linux için en üstteki açıklamayı tek tırnak kullanmayı hatırlamak için güncelledim '.
Eric D. Johnson

2

Birisi bunu Visual Studio'da çözmek isterse, başka bir seçenek bunu Visual Studio aracılığıyla yapıyor olabilir: Takım Gezgini -> Ana Sayfa simgesine tıklayın => Ayarlar düğmesi => Git bölümünü genişlet => Global Ayarlar'a tıklayın

görüntü açıklamasını buraya girin görüntü açıklamasını buraya girin görüntü açıklamasını buraya girin


Visual Studio, Visual Studio Code ile eşdeğer değildir. Bunun gibi ayarların yapılma şekli oldukça farklıdır. Farklılıklar için stackoverflow.com/a/33798601 sayfasına bakın
jwd630

1
@ jwd630 VS kodunun VS'den farklı olduğunu biliyorum. VS'de bu sorunu yaşadım, ancak bunun için bir çözüm bulamadım, bu yüzden birinin bu sorunu deneyimlemesi durumunda onu göndermenin daha iyi olacağını düşündüm. Eksi oy kullanmanıza gerek yok.
Daniel B

2

Üstüne üstlük mükemmel mevcut yanıtlardan , sen ekleyerek yeni bir pencerede VS Kodunu açmalı -nkomut satırına.

Yani git config --global --editböyle bir şeye benziyorsun.

[merge]
        tool = vscode
[mergetool "vscode"]
        cmd = code -n --wait $MERGED
[diff]
        tool = vscode
[difftool "vscode"]
        cmd = code -n --wait --diff $LOCAL $REMOTE                                                    

1

Kılavuzu kullanarak ilginç bir argüman bulabilirsiniz:

git difftool --help 
-x <command>, --extcmd=<command>
       Specify a custom command for viewing diffs.  git-difftool ignores the configured defaults and runs $command $LOCAL $REMOTE when this option is specified.
       Additionally, $BASE is set in the environment.

Bu bilgilerle, git yapılandırmasına dokunmadan aşağıdaki komutu kolayca kullanabilirsiniz:

git difftool -x "code --wait --diff" 

Buraya benzer soru

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.