كيف يمكنك إلغاء فرق GIT الخارجي؟
سؤال
لقد حصلت على إعداد VIM كأداة فرق خارجية:
[diff]
external = git_diff_wrapper
#!/bin/sh
vimdiff "$2" "$5"
قل لدي 300 ملف تم تعديله ؛ عبر باش ، أكتب "git diff". يطلق 300 Vimdiffs بالتتابع ، كيف يمكنني إحباطه؟
المحلول
إذا لم يكن إيقاف العملية غير كافٍ ، فإن قتل القشرة نفسها (التي أطلقت فيها git diff
) قد تكون أكثر فعالية.
أنظر أيضا Git Diff مع 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
كعملية الوالدين.