Git topluluğu neden yan yana farkları görmezden geliyor gibi görünüyor [kapalı]


33

Eskiden Windows, SVN, Tortoise SVN ve Beyond Compare kullandım. Kod incelemeleri yapmak için mükemmel bir kombinasyondu.

Şimdi OSX ve Git'i kullanıyorum. Ancak kabul edilebilir bir çözüm bulmak için Gitx ve DiffMerge ile birlikte bir bash betiğini birlikte çalmayı başardım.

Bir yıldan fazla bir süredir bu kurulumla ve benzerlerini karıştırdım. Ayrıca Github diff görüntüleyicisini ve Gitx diff görüntüleyicisini kullanmayı denedim, bu yüzden onlara bir şans vermedim.

Git'le harika şeyler yapan pek çok akıllı insan var. Neden yan yana tüm dosyayı görme seçeneği ile farklı değil? Her ikisini de kullanan kişilerle, en azından hızlı bir kontrolden daha fazlası için tek +/- görüntülemeyi daha iyi seven birini hiç duymadım.


TortoiseGit'i Beyond Compare'i diiffler için kullanmak üzere kurabilirsiniz, bu durumda tüm dosyayı yan yana görürsünüz (ancak bu kurumu hiçbir zaman kişisel olarak test etmedim (ancak bugünden birini planlayın)).
wildpeaks

1
Sadece bir yorum, Windows, SVN ve Beyond Compare kullanmak. Fakat şimdi Ubuntu + Git'i kullanıyorum. Neyse ki, hala eski dostum Beyond Compare'i kullanabilirim. Ubuntu'da gayet iyi çalışıyor. Ve özgür olmasa da, bana her kuruşa değer. :) Üzgünüm, size OSX'te bir çözüm öneremem, ancak insanların Beyond Compare'in yalnızca Windows için bir çözüm olduğunu düşünmesini istemedim.
David S,

7 yıl sonra kendimi hala biraz böyle hissediyorum, ancak en karmaşık durumlarda tümüyle satır içi farkı tercih etmek için kendimi eğittim. Sonra eski arkadaşım Beyond Compare'i kıracağım.
Kyle Heironimus

Yanıtlar:


19

Bu konuda Linus için konuşamam, ancak git diftoolleri işleme şekli felsefi açıdan çok unixish. git çok iyi yaptığını yapar ve daha sofistike dağılma ve birleşme de dahil olmak üzere her şey için harici araçlar kullanır.

DiffMerge'i OS X'te git ile de kullanıyorum ve hiçbir bash kabuğuna başvurmam gerekmedi. Çok zordu, ancak git'in difftool ve birleştirme aracı ayarlarını doğrudan DiffMerge'i çağıracak şekilde yapılandırdım ve şimdi farkları görüntüleyebilir ve birleştirme çakışmalarını mükemmel, görsel bir üçüncü taraf aracıyla çözebilirim.

İşte benim config:

[mergetool "diffmerge"]
        cmd = "diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$(if test -f \"$BASE\"; then echo \"$BASE\"; else echo \"$LOCAL\"; fi)\" \"$REMOTE\""
        trustExitCode = false
[difftool "diffmerge"]
        cmd = diffmerge \"$LOCAL\" \"$REMOTE\"
[merge]
        tool = diffmerge
[diff]
        tool = diffmerge

1
Bu tamam, ancak birkaç dosya değiştiğinde, git'in bana göstermeye karar verdikleri sırada onlara tek tek bakıyorum. Birini açmak için birini kapatmalıyım. Bu yüzden aynı anda tüm dosyalara bakmak istediğimde bash scriptleri kullanıyorum.
Kyle Heironimus

"Bir kerede hepsine bakma" anlamında ne görmeyi beklediğinizi bilmiyorum. Ama kontrol et git diff --stat. Değiştirilen satırların sayısı ile değiştirilen tüm dosyaların güzel bir grafik listesini verir.
Dan Ray,

Bunun hakkında biraz daha fazla düşünmek "hepsini aynı anda aç" olayı ... Aynı anda kaç dosya düzenleyebilir / görüntüleyebilirsiniz? Herhangi bir anda sadece bir dosyaya bakabilirim. Sanırım istediğini alamadım.
Dan Ray,

2
En iyi örnek, Beyond Compare ile birlikte TortoiseSVN'dir. Örneğin, iş arkadaşımın son taahhüdünde 3 dosya değiştiyse, listede üç dosyayı gösterecektir. Daha sonra farklılıkları görmek için uygun dosyaya tıklayabilirim. Ayrıca her biri farklı dosyaya sahip 3 ayrı pencere açabilirim. Daha sonra değişimi incelemek için gerektiğinde aralarında gidip gelebilirim. Temel olarak, tüm değişiklikleri vcs'nizin belirttiği sıraya göre seri olarak değil, kendi şartlarınızda görüntülemenizi sağlar.
Kyle Heironimus

1
Kule'yi kontrol etmelisin. Bu şimdiye kadar gördüğüm en iyi Mac git gui ve konuştuğunuz şeyi yapıyor ve YOL daha fazlası. git-tower.com
Dan Ray

16

SVN'nin de yan yana bir çözüm sunmadığını fark edeceksiniz. Sıraladığınız şey üçüncü taraf araçları. Git'teki çoğu şeyde olduğu gibi, bu olağanüstü şekilde yapılandırılabilir ve kutudan çıkarılması gereken harika bir araç desteği var. Bir birleştirme aletiniz var mı? Olmazsa, yapmalısın. Yaparsan, dene git difftool. Sonra yapılandırma seçenekleri için man sayfasına bakın.

KDiff3'ü mergetool olarak kullanıyorum, çünkü güzel, platformlar arası bir araç ve başka bir yapılandırma olmadan git difftooltam olarak istediğiniz şeyi yapıyor.


2
Aslında, difftool ile tamam, ancak çok sayıda dosyaya bakarken hala başarısız olur. Birer birer açılmalıdırlar. Hepsini bir kerede açmak için, bash betiği korsanlığı yapmak zorundayım.
Kyle Heironimus

9

Bu * nix felsefesidir. Bu araçları kullanan insanların çoğu terminalde çok zaman harcıyor. Terminal, ellerimizi klavyeden fareye götürmemizi gerektirmiyor. +/- stilini görsel fark / birleştirme araçlarına tercih ettiğimi biliyorum, çünkü sadece farkları önemsiyorum. Değişimin etrafındaki 3-4 çizgiyi ve değişimin kendisini önemsiyorum. Daha fazlası, bana gerçekten yardımcı olmayan ek bilgidir.

Diff'ler, nelerin değiştirildiğine hızlıca bakmak için yaygın olarak kullanılır. Kodu okumak için değil.

GNU sistemlerinde varsayılan farkla karşılaştırıldığında görsel fark araçlarını hiç bu kadar kullanışlı bulmamıştım. Yaptıkları tek şey, fareyle uğraşmaya başlayıp beni dosyaya kaydırmaya zorlamak, kullanıcı arayüzlerini bulmak ve daha sonra farklarda gördüğüm bir sorun hakkında bir şeyler yapabileceğim komut satırına geri dönmekte zorlamak. .


1
vimdiff tamam, genellikle sadece parçaları gösterir. Birleşimler için kullanıyorum; fareye gerek yok.
alternatif olarak

8
Bir iş arkadaşınız tarafından yapılan değişikliklere hiç baktınız mı? Kodun nerelere aşina olmadığınızdan emin misiniz? Her zaman yapıyorum ve yan yana, tüm kod olmadan yapmayı hayal bile edemiyorum. Benim için +/-, tarafından yapılan değişiklikler için harika, ancak diğerleri için değil. Yanlış ya da kötü olduğunu ya da bir şey olduğunu söylememek. Sadece soruyorum.
Kyle Heironimus 24:11

1
Sık sık aşina olmadığım alanlarda, iş arkadaşları tarafından değiştirilen koda dönüyorum. Sanırım belki 3 ya da 4 kez yan yana kullandım ve kolayca da yapabilirdim. Bu sadece tercih ettiğiniz işletim tarzının ne olduğuna bağlıdır. Senin için işe yarıyor, gereksiz buluyorum.
Brian Knoblauch

0

Kişisel kullanımımdan, cevabın çoğunlukla farkların fark etmeyecek kadar kısa olduğunu düşünüyorum.

Kod incelemeleri için, bana beğendiğim her şeyi - yorum, sözdizimi vurgulaması ve yan yana görüntüleme gibi özelliklere sahip, tam özellikli bir kod inceleme aracı kullanıyorum.

Kullandığım git diffevreleme kodu işlemeye zaman süresince neredeyse sadece; Durum böyle olduğunda, farklar yeterince küçük ve yeterince yeni, neler olduğunu hatırlamak için bağlamı görmeme gerek kalmadı.

Tercih ettiğim kod gözden geçirme aracı Phabricator veya dil bağlamından haberdar olan IDE ile tümleşik araçlar. Bence github'un çekme talebi akışı, çoğunlukla yan yana değil birleşik bir fark gösterdiği için kod incelemesi için korkunç.

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.