Git içindeki ikili dosyaları dağıtmak için, bir difftool kurmam gerektiğini düşünüyorum.
Hangi difftools işe yarıyor? Parametreleri nasıl girersiniz?
Git içindeki ikili dosyaları dağıtmak için, bir difftool kurmam gerektiğini düşünüyorum.
Hangi difftools işe yarıyor? Parametreleri nasıl girersiniz?
Yanıtlar:
textconvBir dosya türü için bir yapılandırma seçeneği ayarlayabilirsiniz . Bkz. Gitattributes ( "İkili dosyaların metin farklarını gerçekleştirme " ) . Ne kullanmanız gerektiğini filetype bağlıdır.
Örnek 1 :
Zip dosyalarının içeriğini değiştirmek istediğinizi söyleyin. Bu durumda aşağıdakini $ GIT_DIR / config dosyasına veya $ HOME / .gitconfig içine koymalısınız.
[diff "zip"]
textconv = unzip -v
Bir dahaki sefere bir zip dosyasındaki bir farkın bir repoda olmasını istediğinizde unzip -v, her iki sürümü de çağıracak ve elde edilen metni değiştirecektir.
Örnek 2 :
Pdf dosyaları için kullanabilirsiniz pdfinfo;
[diff "pdf"]
textconv = pdfinfo
Örnek 3 :
Bir dosya türü için belirli bir bilgi kaynağı programı yoksa, örneğin kullanabilirsiniz hexdump(Linux'ta da mevcut FreeBSD ve OSX ile birlikte gelir):
[diff "bin"]
textconv = hexdump -v -C
Roland Smith’in cevabı yardımcı oldu, ancak şu anda eksik (yorumlara bakınız) - bunun iki kısmı var.
Depo .git/configdosyanızda veya kişisel genel ~/.gitconfigdosyanızda yeni bir diff komutları tanımlayabilirsiniz , örneğin hexdumpşunları kullanarak bir hex diff komutu :
[diff "hex"]
textconv = hexdump -v -C
binary = true
Daha sonra, .gitattributesbu özel diff komutuyla hangi dosyaların kullanılması gerektiğini bildirmek için havuzun dosyasını kullanmanız gerekir:
# Binary files (no line-ending conversions), diff using hexdump
*.bin binary diff=hex
.gitignoreDosya gibi, dosya da .gitattributeshavuzunuza kontrol edilmelidir.
Benim durumumda, ikili olarak ele almak istediğim birkaç farklı dosya uzantısına sahibim (örneğin, Windows'ta git kullanıyorsanız dönüşümleri sonlandırmaktan kaçının) ve ayrıca şu farkları da görebiliyorum hexdump:
https://github.com/peterjc/galaxy_blast/commit/5ec4695e6c3da3926fb100ca006f0f3e88c53c3d
Görüntü dosyalarıyla birlikte kullanmak için bir hexdump diff komutunu tanımlayan başka bir örnek için ayrıca bkz. Https://github.com/resin-io/etcher/pull/1367 .
.gitattributesGlobal olarak da ayarlayabilirsiniz ( global'inizdeki [diff]girişlerle birlikte gitmek için .gitconfig). .gitattributesYerel olarak repoyu yaparsanız, kullanıcının yerel .gitconfigrepo ayarlarını değiştirmesi gerekir, çünkü güvenlik nedeniyle bunlar uzaklara itilmez. Her iki durumda da, her kullanıcının bu davranışı etkinleştirmek için bir şekilde yerel dosyalarını / config ayarlarını güncellemesi gerekir. In .gitconfigaltında [core]eklenti attributesfile = c:/users/<username>/.gitattributesveya nerede bunu küresel (hatta pencerelerde, forwardslashes dikkat edin) yaparsanız saklamak istiyorum.
Yukarıdakiler bunu yapmanın kapsamlı yollarıdır .. ancak, birkaç dosya için yapmanız gerekiyorsa, aşağıdaki yöntem kullanıyorum:
git checkout HEAD -- /path/to/file > ~/file
vimdiff ~/file /path/to/file
Burada kullanıyorum vimdiffama başka herhangi bir araç kullanabilirsiniz. Bunu tekrar tekrar yapmanız gerekiyorsa, yukarıdakiler küçük bir betiğe de birleştirilebilir.