سؤال

لقد حصلت على إعداد VIM كأداة فرق خارجية:

[diff]
        external = git_diff_wrapper

#!/bin/sh

vimdiff "$2" "$5"

قل لدي 300 ملف تم تعديله ؛ عبر باش ، أكتب "git diff". يطلق 300 Vimdiffs بالتتابع ، كيف يمكنني إحباطه؟

هل كانت مفيدة؟

المحلول

إذا لم يكن إيقاف العملية غير كافٍ ، فإن قتل القشرة نفسها (التي أطلقت فيها git diff) قد تكون أكثر فعالية.

http://trick.vanstaveren.us/wp/wp-uploads/2009/06/close-this-window.png


أنظر أيضا Git Diff مع Vimdiff

VimDiff

عدم الاستعداد للذهاب بأقصى سرعة في الاستخدام vimdiff (أنا جديد فقط على ذلك) ، وضعت ما يلي فيgitvimdiff’.
والنتيجة هي أنه يمكنني استخدام vimdiff للنظر إلى git-diff من خلال الجري "gitvimdiff"، ولكن الاحتجاج الطبيعي"git diffيتصرف كما اعتدت على.

#!/bin/sh

if [ -n "${GIT_EXTERNAL_DIFF}" ]; then
[ "${GIT_EXTERNAL_DIFF}" = "${0}" ] ||
{ echo “GIT_EXTERNAL_DIFF set to unexpected value” 1>&2; exit 1; }
exec vimdiff “$2″ “$5″
else
GIT_EXTERNAL_DIFF=”${0}” exec git –no-pager diff “$@”
fi

ولكن إذا كنت لا تزال تريد التعديل git diff, ، أ git status قد يساعد قبل إطلاقه ؛)

ويمكنك إعداد وظيفة للحصول على القديم git diff السلوك إذا لزم الأمر:

لا يزال لدي إمكانية الوصول إلى سلوك Diff الافتراضي مع --no-ext-diff علَم. إليك وظيفة أضعها في ملفات تكوين Bash الخاصة بي:

function git_diff() {
  git diff --no-ext-diff -w "$@" | vim -R -
}
  • --no-ext-diff: لمنع استخدام VIMDIFF
  • -w: لتجاهل المسافة البيضاء
  • -R: لبدء VIM في وضع القراءة فقط
  • -: لجعل Vim يعمل كإياكير

نصائح أخرى

استخدام: cquit للخروج من VIM مع رمز خطأ. سوف تكتشف GIT الخطأ وتتوقف عن فتح vimdiffs الجديدة. ربما تريد إنشاء رسم خرائط له في .vimrc:

if &diff
  map Q :cquit<CR>
endif

ثم فقط ضرب Q إلى الإجهاض المبكر من تشغيل Git Diff.

لكي يعمل هذا ، يجب عليك تحرير GitConfig:

git config --global difftool.trustExitCode true
git config --global mergetool.trustExitCode true

فقط اقتل عملية الوالدين. افتح محطة ، استخدم pstree -p للعثور على معرف العملية (PID) من git العملية ، ثم kill -9 هو - هي. على نظامي ، يبدو شيئًا كهذا:

$ pstree -p
...
        ├─gnome-terminal(20473)─┬─bash(10302)───git(10331)───pager(10332)
...
$ kill -9 10331

ليس أنيقًا تمامًا ، لكنه يعمل. على نظامك ، pager من المحتمل أن يكون شيئًا مختلفًا ، لكنه سيكون عليه git كعملية الوالدين.

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