গিটে বাইনারি ফাইলগুলি পৃথক করার জন্য, আমি ধরে নিই যে আমার একটি ডিফ্টল সেটআপ করা দরকার।
ডিফ্টলগুলি কী কাজ করে? আপনি কীভাবে পরামিতিগুলি রাখবেন?
গিটে বাইনারি ফাইলগুলি পৃথক করার জন্য, আমি ধরে নিই যে আমার একটি ডিফ্টল সেটআপ করা দরকার।
ডিফ্টলগুলি কী কাজ করে? আপনি কীভাবে পরামিতিগুলি রাখবেন?
উত্তর:
আপনি textconv
একটি ফাইল টাইপের জন্য একটি কনফিগার বিকল্প সেট করতে পারেন । গিটাট্রিবিউটস (5) এ "বাইনারি ফাইলগুলির পাঠ্য পৃথক করে" দেখুন । আপনার যা ব্যবহার করা উচিত তা ফাইল টাইপের উপর নির্ভর করে।
উদাহরণ 1 :
বলুন আপনি জিপ ফাইলগুলির বিষয়বস্তু আলাদা করতে চান। সেক্ষেত্রে আপনার নিম্নলিখিত দুটিটি $ GIT_DIR / কনফিগারেশন ফাইল বা OME HOME / .gitconfig এ রাখা উচিত।
[diff "zip"]
textconv = unzip -v
পরের বার আপনি কোনও রেপোতে জিপ ফাইলে আলাদা করার জন্য জিজ্ঞাসা করবেন, এটি unzip -v
উভয় সংস্করণে কল করবে এবং ফলাফলের পাঠ্যকে পৃথক করবে।
উদাহরণ 2 :
পিডিএফ ফাইলের জন্য আপনি যেমন ব্যবহার করতে পারেন pdfinfo
;
[diff "pdf"]
textconv = pdfinfo
উদাহরণ 3 :
যদি কোনও ফাইল টাইপের জন্য নির্দিষ্ট কোনও ইনোমেশনেশন ইউটিলিটি না থাকে তবে আপনি যেমন ব্যবহার করতে পারেন hexdump
(ফ্রিবিএসডি এবং ওএসএক্সের সাথে আসে, লিনাক্সেও উপলভ্য):
[diff "bin"]
textconv = hexdump -v -C
রোল্যান্ড স্মিথের উত্তরটি সহায়ক ছিল কিন্তু বর্তমানে অসম্পূর্ণ (মন্তব্যগুলি দেখুন) - এর দুটি অংশ রয়েছে।
আপনি আপনার সংগ্রহস্থলের .git/config
ফাইল বা আপনার ব্যক্তিগত গ্লোবাল ~/.gitconfig
ফাইলে একটি নতুন ডিফ কমান্ড সংজ্ঞায়িত করতে পারেন , উদাহরণস্বরূপ একটি হেক্স ডিফ কমান্ড ব্যবহার করে hexdump
:
[diff "hex"]
textconv = hexdump -v -C
binary = true
এর পরে, আপনাকে .gitattributes
এই বিশেষ ডিফ কমান্ডের সাহায্যে কোন ফাইলগুলি ব্যবহার করা উচিত তা গিটকে জানাতে আপনার সংগ্রহস্থলের ফাইলটি ব্যবহার করতে হবে:
# Binary files (no line-ending conversions), diff using hexdump
*.bin binary diff=hex
.gitignore
ফাইলের মতো, ফাইলটি .gitattributes
আপনার সংগ্রহস্থলের মধ্যে পরীক্ষা করা উচিত।
আমার ক্ষেত্রে আমার বিভিন্ন ফাইল এক্সটেনশন রয়েছে যা আমি বাইনারি হিসাবে বিবেচনা করতে চাই (উদাহরণস্বরূপ উইন্ডোজে গিট ব্যবহার করা হলে কোনও লাইন শেষ হওয়া কোনও রূপান্তর এড়ানো), এবং এর মাধ্যমে কোনও পার্থক্যও দেখুন hexdump
:
https://github.com/peterjc/galaxy_blast/commit/5ec4695e6c3da3926fb100ca006f0f3e88c53c3d
চিত্র ফাইলগুলির সাথে ব্যবহারের জন্য হেক্সডাম্প ডিফ্ট কমান্ড সংজ্ঞায়িত করার জন্য অন্য উদাহরণের জন্য https://github.com/resin-io/etcher/pull/1367 দেখুন ।
.gitattributes
বিশ্বব্যাপীও সেট করতে পারেন ( [diff]
আপনার বিশ্বব্যাপী এন্ট্রিগুলি বরাবর যেতে .gitconfig
)। আপনি যদি .gitattributes
স্থানীয়টিকে রেপোতে পরিণত করেন তবে ব্যবহারকারীকে তার স্থানীয় .gitconfig
রেপো সেটিংস সংশোধন করতে হবে কারণ সুরক্ষার কারণে সেগুলি রিমোটে চাপানো হবে না। যে কোনও উপায়ে, প্রতিটি ব্যবহারকারীর এই আচরণটি সক্ষম করতে তাদের স্থানীয় ফাইলগুলি / কনফিগারেশন আপডেট করতে হবে। ইন .gitconfig
অধীনে [core]
অ্যাড attributesfile = c:/users/<username>/.gitattributes
বা যেখানেই আপনি যদি আপনি এটি বিশ্বব্যাপী (forwardslashes করে মনে রাখবেন, জানালা এমনকি) এটিকে সঞ্চয় করতে চান।
উপরেরগুলি এগুলি করার জন্য বিস্তৃত উপায় .. তবে, কয়েকটি ফাইলের জন্য আপনার যদি এটি করা দরকার হয় তবে নীচের পদ্ধতিটি আমি ব্যবহার করি:
git checkout HEAD -- /path/to/file > ~/file
vimdiff ~/file /path/to/file
এখানে আমি ব্যবহার করছি vimdiff
তবে আপনি অন্য কোনও সরঞ্জাম ব্যবহার করতে পারেন। যদি আপনার বারবার এটির প্রয়োজন হয় তবে উপরেরগুলি একটি ছোট স্ক্রিপ্টের সাথেও সংযুক্ত করা যেতে পারে।