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:
textconv
Bir 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/config
dosyanızda veya kişisel genel ~/.gitconfig
dosyanı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, .gitattributes
bu ö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
.gitignore
Dosya gibi, dosya da .gitattributes
havuzunuza 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 .
.gitattributes
Global olarak da ayarlayabilirsiniz ( global'inizdeki [diff]
girişlerle birlikte gitmek için .gitconfig
). .gitattributes
Yerel olarak repoyu yaparsanız, kullanıcının yerel .gitconfig
repo 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 .gitconfig
altında [core]
eklenti attributesfile = c:/users/<username>/.gitattributes
veya 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 vimdiff
ama başka herhangi bir araç kullanabilirsiniz. Bunu tekrar tekrar yapmanız gerekiyorsa, yukarıdakiler küçük bir betiğe de birleştirilebilir.