كمطوّر، ربما تستخدم واجهة سطر الأوامر Git CLI يوميًا. ومع ذلك، قد يكون كتابة الأوامر القديمة بشكل متكرر مُرهقًا، خصوصًا عندما تكون الأوامر طويلة. هنا تأتي الاختصارات في Git للمساعدة.
في هذا المقال، ستتعلم كيفية تبسيط أوامر Git الخاصة بك باستخدام الاختصارات.
جدول المحتويات
المتطلبات المسبقة
-
معرفة Git.
-
تثبيت Git Bash (اختياري ولكن مُوصى به لمستخدمي Windows).
-
IDE مثل VS Code (هذا أيضًا اختياري).
ما هي الاختصارات في Git؟
الاختصارات في Git هي اختصارات مخصصة لأوامر Git الحالية، مما يجعل المهام الشائعة أسرع وأسهل. تتيح لك تعريف الأوامر الخاصة بك، مما يسمح لك بتخصيص الاختصارات بالضبط كما تريد.
لديك خياران رئيسيان لإضافة/إنشاء اختصارات Git في تكوين Git الخاص بك، باستخدام ملف تكوين Git الخاص بك أو إضافتها مباشرة عبر سطر الأوامر (الطرفية/السطر الأمر).
كيفية إضافة الاختصارات في Git عبر ملف تكوين Git العام (المُوصى به)
ينطوي هذا الخيار على فتح ملف تكوين Git العام الخاص بك وإضافة الاختصارات الخاصة بك إلى أسفل الملف.
كيفية تعيين محرر Git المفضل لديك
قم بتعيين برنامج تحرير Git الافتراضي الخاص بك، على سبيل المثال، أستخدم VS Code لتحرير ملف تكوين Git الخاص بي، ولكن يمكنك استخدام أي محرر نص/محرر كود تفضله.
قم بتشغيل هذا الأمر لتعيين Notepad كمحرر مفضل لديك على نظام Windows (CMD/PowerShell):
git config --global core.editor "notepad"
قم بتشغيل هذا الأمر لتعيين VS Code كمحرر مفضل لديك على نظام Windows و MacOS/Linux:
git config --global core.editor "code --wait"
لتعيين محرر افتراضي مختلف، ابحث عبر الإنترنت عن “تعيين {editor} كمحرر Git افتراضي”، واستبدل {editor}
بالتطبيق الذي تفضله.
كيفية فتح ملف تكوين Git
افتح الطرفية التي تفضلها وأدخل الأمر التالي. سيفتح هذا ملف تكوين Git العام (git config —global
)، في وضع التحرير (-e
).
git config --global -e
يمكنك فتح ملف تكوين git مباشرة من المواقع التالية:
نظام التشغيل Mac Os: دليل المستخدم → إظهار الملفات المخفية (Cmd + Shift + H) → .gitconfig
نظام التشغيل Windows: C:\Users\YourUsername\
→ ثم إظهار الملفات المخفية (في عرض) → والبحث عن .gitconfig
نظام التشغيل Linux: دليل المستخدم → إظهار الملفات المخفية (Ctrl + H) → .gitconfig
كيفية إضافة اختصار Git عبر ملف التكوين الخاص بك
إذا كنت تقوم بإضافة اختصارات Git للمرة الأولى، افتح ملف .gitconfig
الخاص بك، أضف [alias]
في النهاية، ثم قم بتوضيح اختصاراتك أدناه. هذا يُخبر Git بأن هذه هي اختصارات. أضف الاختصار الذي تفضله (الأمر المختصر الذي ترغب في تشغيله).
صيغة اختصار Git هي <alias> = <command>
، لذا لدينا:
co = checkout
cob = checkout -b
شرح الأمثلة أعلاه:
co = checkout
هذا يعين الأمر git checkout
لاختصاره إلى الأمر git co
. بعد ذلك ستقوم بكتابة git co feature/123
في الطرفية الخاصة بك.
لن تحتاج إلى كتابة git
قبل الأمر، حيث سيقوم التكوين بإضافته تلقائيًا نظرًا لأنه يعرف الأمر الذي تقوم بتعيينه هو أمر Git.
ملاحظة: سيتم تطبيق أي معلمات تمرر إلى الأمر على الأمر النهائي المستدعى ضمن الاسم المستعار فقط.
يمكن إضافة المزيد من الاسماء المستعارة بهذه الطريقة، مع اختصارات لأوامر git الموجودة بالفعل. ستجعل حفظ وإغلاق الملف الاسماء المستعارة متاحة ضمن طرفيتك.
كيفية إضافة الأسماء المستعارة في واجهة سطر الأوامر
إذا كنت ترغب في نهج أكثر تنظيمًا لإضافة الأسماء المستعارة Git، يمكنك إضافتها مباشرة من داخل طرفية الأوامر.
باختصار الأمثلة أعلاه، يمكننا إضافتها مباشرة على النحو التالي:
صيغة الأمر هي: git config --global alias.{اسم_الاسمارة} "{الأمر_الأصلي}"
:
git config --global alias.co "checkout"
#أو
git config --global alias.cob "checkout -b"
من السهل جدًا!
كيفية إنشاء أوامر مخصصة لاختصارات أكثر تعقيدًا
حسنًا، يبدو أن هذا رائع، ولكنه ليس حقًا مثيرًا – نحن فقط نزيل بضعة أحرف. ومع ذلك، يمكننا جعلها أكثر فائدة، يمكننا إنشاء أوامرنا باستخدام أوامر الشل.
دعونا نأخذ مثالًا على ذلك، أمراً أستخدمه كثيرًا!
new-work = !git checkout main && git pull && git cob
يجمع هذا الاسم المستعار بين عدة أوامر Git في أمر واحد للشل. يخبر الحرف !
Git بمعالجته كأمر شل، وليس كأمر Git قياسي.
بدون !
، يعامل Git الاسم المستعار كأمر Git (على سبيل المثال، checkout
يصبح git checkout
). بوجود !
، يعرف Git أن يشغله كأمر شل دون إضافة git
في البداية.
عن طريق ربط هذه الأوامر، يمكننا كتابة اختصارات أكثر فائدة بكثير. الاختصار أعلاه سيقوم بما يلي:
-
أولاً، يقوم بالتحقق من فرع
main
. -
باستخدام مشغل
&&
، يعني أن الأوامر الأخرى ستعمل فقط إذا نجحت السابقة. -
ثانياً، سيقوم بجلب التغييرات من فرع
main
. -
أخيراً، سينشئ فرعًا جديدًا من فرع
main
باستخدام اختصارنا الآخرgit cob
.
يمكن للأمر النهائي بعد ذلك قبول المعلمات (كما يفعل الأمر الأصلي من Git)، لذا يمكن استخدامه كما يلي:
git new-work 'feature/new-work-from-main'
كيفية استخدام المعلمات في جميع الأوامر
حتى الآن، لم نكن قادرين سوى على تمرير معلماتنا إلى الأمر النهائي لجيت في الاسم المستعار الخاص بنا. ومع ذلك، ماذا لو أردنا تمرير معلمات إلى بعض، إن لم يكن كل، الأوامر داخل الاسم المستعار؟ يمكننا تحقيق ذلك عن طريق استخدام وظيفة القش.
خذ المثال التالي:
new-work = "!f() { git checkout \"$1\" && git pull && git checkout -b \"$2\"; }; f"
في المثال أعلاه، نستخدم وظيفة القش التي تقوم بمعالجة معلمات الإدخال.
الشرح:
-
!f()
:-
الرمز
!
يخبر جيت بتفسير الاسم المستعار كأمر قش بدلاً من أمر جيت القياسي. -
f()
يعرف وظيفة قش باسمf
التي ستسمح لنا بتنفيذ عدة أوامر بتسلسل.
-
-
كل ما بين
{ }
هو ما سيتم تنفيذه داخل وظيفةf()
. -
git checkout \”$1”'\
: ستقوم بتشغيل أمر Git المعلم بالمعلمات، حيث يتم تهريب$1
وسيتم استبداله بالمعلم الأول الذي تم تمريره إلى الاسم المستعار. تسمح تسلسلات الهروب\"
حول$1
بوجود أسماء فروع تحتوي على مسافات. -
&&
هو عامل منطقي يضمن تشغيل كل أمر فقط إذا نجح الأمر السابق. إذا فشلgit checkout "$1"
، فلن يتم تشغيل الأوامر التالية. -
git checkout -b \”$2”\
: ينشئ فرعًا جديدًا باسم المعلم الثاني كما كانت عليه السابق. -
;
: يحدد نهاية الوظيفةf()
؛ -
f
: يتصل الـf
النهائي بوظيفة الاسم المستعار مباشرة، مما يعني أنه عند استدعاء الاسم المستعار، فإنه يعلن الوظيفة ثم يستدعيها فورًا.
الاستخدام:
git new-work development task/feat-123
الأوامر البديلة المفيدة
[alias]
co = checkout
cob = checkout -b
s = status
tidy-up = !git checkout main && git branch | grep -v "main" | xargs git branch -D
latest = !git checkout main && git pull
new-work = "!f() { git checkout \"$1\" && git pull && git checkout -b \"$2\"; }; f"
done = !git push -u origin HEAD
save = !git add -A && git commit
saveM = !git add -A && git commit -m
br = branch --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:green)(%(committerdate:relative)) [%(authorname)]' --sort=-committerdate
الملخص
co:
الانتقال إلى الفرع المعطى → git co task/feat-123
cob
: إنشاء فرع جديد من الفرع الحالي → git cob feature/123
s
: يستدعي git status
لعرض حالة الفرع الحالي في Git → git s
tidy-up
: حذف كافة الفروع المحلية باستثناء main
→ git tidy-up
latest
: الحصول على آخر التغييرات من الفرع البعيد main
→ git latest
new-work
: إنشاء فرع جديد (المعامل الثاني) من الفرع المعطى في المعامل الأول → git new-work main feat/123
git done
: يقوم بدفع الفرع الحالي إلى المستودع البعيد (origin
) ويضبطه كفرع متابع. يمكن أن يكون مفيدًا عند دفع التعديل الأول الخاص بك والحصول على خطأ: fatal: The current branch has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin
save
: سيقوم ببساطة بإضافة كل الملفات المعدلة، وتأكيدها، وفتح محرر Git الافتراضي الخاص بك وطلب رسالة تأكيد → git save
savem
: سيقوم بالقيام بما تم ذكره أعلاه، ولكن بدلاً من فتح محررك، يمكنك تمرير رسالة تأكيد مُضمنة → git savem ‘Task123: add index.html
br:
تبدو هذه معقدة قليلاً، ولكنها ليست بمعقدة كما يبدو ولكنها تبرز قوة الاختصارات. في الجوهر، يُخصص هذا الاختصار تنسيق الإخراج لأمر git branch
لعرض قائمة مفصلة، مُلونة للفروع، مرتبة حسب تاريخ أحدث عملية commit، ستبدو شكلها مثل الصورة أدناه لكل فرع تمتلكه محليًا.
وهكذا، لقد قدمنا مقدمة عن اختصارات Git وبعض الأمثلة المفيدة للاختصارات التي يمكنك إضافتها كبداية لتكوينك.
كالعادة، إذا كنت ترغب في الدردشة حول ذلك، أو سماع عن مقالات مستقبلية يمكنك متابعتي على تويتر.
Source:
https://www.freecodecamp.org/news/how-to-simplify-your-git-commands-with-git-aliases/