سؤال

أنا أركض 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

أو مع التلوين بدلا من ذلك:

result of just <code>git diff</code>

قد تحصل على هذا:

result of <code>git diff --word-diff</code>

الآن، إذا كنت تقارن سطرًا طويلًا حقًا، فقد لا تزال تواجه مشكلات مع موقف جهاز النداء الذي وصفته في الأصل، والذي تمت معالجته، على ما يبدو بما يرضي، في إجابات أخرى.نأمل أن يمنحك هذا أداة جديدة للتعرف بسهولة أكبر على ما تغير على الخط.

لاستخدام أقل كجهاز النداء وجعل التفاف الخط دائمًا، يمكنك ببساطة تمكين خيار طي الخطوط الطويلة:

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، يكون الالتفاف هو الإعداد الافتراضي

جيت v2.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)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top