git diff - التعامل مع الخطوط الطويلة؟
سؤال
أنا أركض git-diff على ملف، ولكن التغيير يكون في نهاية سطر طويل.
إذا استخدمت مفاتيح المؤشر للتحرك إلى اليمين، فسيفقد ترميز الألوان والأسوأ من ذلك أن الخطوط لا تصطف، مما يجعل من الصعب تتبع التغيير.
هل هناك طريقة لمنع هذه المشكلة، أو ببساطة جعل الخطوط تلتف بدلاً من ذلك؟
(تشغيل بوابة 1.5.5 عبر mingw32)
المحلول
عرض الإخراج من git diff
يتم التعامل معه بواسطة أي جهاز النداء الذي تستخدمه.
عادة، في ظل نظام Linux، less
سيتم استخدامها.
يمكنك إخبار git باستخدام جهاز بيجر مختلف عن طريق تعيين GIT_PAGER
متغيرات البيئة.إذا كنت لا تمانع بشأن الترحيل (على سبيل المثال، يسمح لك الجهاز الطرفي الخاص بك بالتمرير للخلف) فقد تحاول الإعداد بشكل صريح GIT_PAGER
لإفراغ إيقافه باستخدام جهاز النداء.تحت لينكس:
$ GIT_PAGER='' git diff
بدون جهاز النداء، سوف تلتف الخطوط.
إذا كان جهازك الطرفي لا يدعم الإخراج الملون، فيمكنك أيضًا إيقاف تشغيله باستخدام إما --no-color
الوسيطة، أو وضع إدخال في قسم الألوان في ملف git config الخاص بك.
$ GIT_PAGER='' git diff --no-color
نصائح أخرى
أو إذا كنت تستخدم أقل كجهاز النداء الافتراضي، فاكتب فقط -S
أثناء عرض الفرق لإعادة تمكين الالتفاف بشكل أقل.
تستطيع ايضا استخذام git config
لإعداد جهاز النداء للالتفاف.
$ git config core.pager 'less -r'
يضبط إعداد النداء للمشروع الحالي.
$ git config --global core.pager 'less -r'
يقوم بتعيين جهاز النداء عالميًا لجميع المشاريع
مع الائتمان الكامل ل جوش ديهل في تعليق ل هذه الإجابة, ومع ذلك، أشعر أن هذا يجب أن يكون إجابة في حد ذاته، لذا أضفه:
إحدى الطرق للتعامل مع رؤية الاختلافات في الأسطر الطويلة هي استخدام الفرق الموجه نحو الكلمات.يمكن القيام بذلك باستخدام:
git diff --word-diff
في هذه الحالة، ستحصل على مخرجات مختلفة بشكل كبير، والتي توضح لك على وجه التحديد ما تغير داخل السطر.
على سبيل المثال، بدلاً من الحصول على شيء مثل هذا:
diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
-this is a short line
+this is a slightly longer line
قد تحصل على شيء مثل هذا:
diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
this is a [-short-]{+slightly longer+} line
أو مع التلوين بدلا من ذلك:
قد تحصل على هذا:
الآن، إذا كنت تقارن سطرًا طويلًا حقًا، فقد لا تزال تواجه مشكلات مع موقف جهاز النداء الذي وصفته في الأصل، والذي تمت معالجته، على ما يبدو بما يرضي، في إجابات أخرى.نأمل أن يمنحك هذا أداة جديدة للتعرف بسهولة أكبر على ما تغير على الخط.
لاستخدام أقل كجهاز النداء وجعل التفاف الخط دائمًا، يمكنك ببساطة تمكين خيار طي الخطوط الطويلة:
git config --global core.pager 'less -+S'
بهذه الطريقة لن تضطر إلى كتابتها أثناء استخدام أقل.
هتافات
فقط بحثت في جوجل عن هذا. GIT_PAGER='less -r'
تناسبني
ماك أو إس إكس:لم تنجح معي أي من الإجابات الأخرى باستثناء "-S" الخاصة بشخص ما 45 أثناء تشغيل أقل.استغرق الأمر ما يلي لجعل التفاف الكلمات مستمرًا:
git config --global core.pager 'less -+$LESS -FRX'
منذ Git 1.5.3 (سبتمبر 2007)
أ --no-pager
لقد كان الخيار متاحا.
git --no-pager diff
كيف أمنع git diff من استخدام جهاز النداء؟
بدءًا من الإصدار 2.1، يكون الالتفاف هو الإعداد الافتراضي
وبعد ثماني سنوات أجد إجابة أفضل، من https://superuser.com/questions/777617/line-wrapping-less-in-os-x-specially-for-use-with-git-diff:
git config core.pager `fold -w 80 | less`
الآن تقوم بتوجيه git diff عبر الطية، أولاً، ثم إلى أقل:ملفوف، ارتفاع الصفحة الأقل صحيح، استمر في تمييز بناء الجملة.
يمكنك ببساطة توجيه إخراج git diff إلى المزيد:
git diff | more
ليس الحل الأمثل، ولكن gitk
و git-gui
يمكن كلاهما إظهار هذه المعلومات ، ولديه أشرطة التمرير.
عندما تستخدم "git diff" وتظهر عدة صفحات (ترى ": "في نهاية الصفحة) في هذه الحالة يمكنك كتابة "-S" والضغط على مفتاح الإدخال (يجب أن يكون حرف S كبيرًا).فإنه سيتم تبديل أضعاف الخطوط الطويلة.
ولم يشر أحد إلى هذا حتى الآن.من السهل جدًا تذكره ولا يلزم إجراء أي تكوين إضافي في git config
git diff --color | less -R
قائمة التكوين الحالي/الافتراضي:
$ git config --global core.pager
less -FXRS -x2
ثم قم بالتحديث واترك -S مثل:
$ git config --global core.pager 'less -FXR -x2'
-S:يتسبب في تقطيع الخطوط الأطول من عرض الشاشة بدلاً من طيها.
عندما أواجه مشكلة، غالبًا ما ألجأ إلى DiffMerge.أداة فرق ممتازة تحتوي على تسليط الضوء على الفرق في السطر.أيضًا، في الإصدارات الأخيرة أضافوا وضعًا للحصول على الوضع الأفقي.
لم أتمكن من تكوين git لاستخدامه.لذلك لا بد لي من العبث للحصول على كلا الإصدارين من الملف أولاً.
الطريقة السهلة للقيام بذلك، في حالتي أستخدم نظام التشغيل Linux
git diff > text.txt
قم بإنشاء سطر الأوامر هذا ويضع إخراج GIT Diff داخل text.txt ثم يمكنك فتحه مع محرر نصي آخر على سبيل المثال نص Sublime.
sublime text.txt
نأمل أن تساعدك.
لا تنسى حذفه بعد.=0)