Git Bash: ما هو وكيف تستخدمه في Windows
Git Bash طرفية لنظام Windows تُثبَّت مع Git for Windows، وتوفر بيئة Unix المألوفة: قشرة bash وأوامر ls وcd وcat وgrep وssh، وGit نفسه. وهي موجودة لكي تعمل أوامر Git وتعليمات الوثائق في Windows كما تعمل في Linux وmacOS.
ما هو Git Bash
Git Bash تطبيق لنظام Windows يُثبَّت مع Git for Windows، ويفتح نافذة طرفية تعمل بقشرة bash. بداخله يعمل Git نفسه ومجموعة من أدوات Unix القياسية: ls وcd وpwd وcat وgrep وfind وless وssh وssh-keygen وcurl وغيرها.
من الناحية التقنية هو منفذ لبيئة MSYS2: البرامج مترجمة لـ Windows لكنها تتصرف كما في Linux. والنافذة الافتراضية هي محاكي MinTTY. وهو ليس آلة افتراضية ولا Linux كاملاً، فلذلك يوجد WSL. Git Bash أخف: يعمل فوراً ويتعامل مباشرة مع ملفات Windows.
يكتب الناس في البحث أحياناً «git bush» أو «гит баш» — والمقصود شيء واحد. كلمة Bash اختصار لـ Bourne Again SHell، ولا علاقة لها بالشجيرات (bush).
لماذا Git Bash إذا كانت لدينا cmd وPowerShell
يعمل Git بشكل ممتاز في PowerShell وفي موجه الأوامر العادي. لكن لـ Git Bash مزايا عملية، خاصة للمبتدئين.
- أوامر واحدة على كل الأنظمة. توثيق Git وإجابات المنتديات وتعليمات GitHub والدورات تكتب الأوامر بصيغة bash. وفي Git Bash تعمل دون تعديل:
rm -rf build، وcat ~/.ssh/id_ed25519.pub، وexport VAR=value. - أدوات SSH جاهزة.
ssh-keygenوssh-agentوssh-addموجودة بالفعل، ومفتاح GitHub يُنشأ في دقيقة. - معلومات Git في سطر الأوامر. يعرض Git Bash الفرع الحالي داخل سطر الإدخال، مثل
(main)، وأثناء الدمج يعرض(main|MERGING). - الإكمال التلقائي. مفتاح Tab يكمل أوامر Git وأسماء الفروع والملفات.
- مهارة للمستقبل. الخوادم وحاويات Docker وCI تعمل على Linux. وبعد التعود على bash في Git Bash ستشعر بأنك في بيتك على الخادم.
Git Bash وGit CMD وPowerShell: ما الفرق
بعد تثبيت Git for Windows تظهر عدة بنود في قائمة «ابدأ»، وهذا يربك الكثيرين.
| الأداة | ما هي | متى تستخدمها |
|---|---|---|
| Git Bash | قشرة bash مع أدوات Unix وGit | العمل الأساسي مع Git، واتباع التعليمات من الإنترنت |
| Git CMD | موجه أوامر Windows العادي (cmd.exe) مع Git في PATH | إذا اعتدت على cmd وتحتاج فقط أوامر git |
| Git GUI | واجهة رسومية بسيطة مبنية على Tcl/Tk | لتجميع commit بشكل مرئي، ونادراً ما تُستخدم |
| PowerShell / cmd | الطرفيات القياسية في Windows | يعمل Git إذا اخترت عند التثبيت PATH «from the command line and also from 3rd-party software» |
Git CMD ليس برنامجاً منفصلاً، بل موجه cmd عادي مع بيئة مضبوطة. أوامر Git فيه هي نفسها، لكن ls وcat وgrep لا تعمل، وبدلاً منها dir وtype وfindstr. وعادةً ما تعني استعلامات «cmd git» هذا بالضبط: كيف تشغّل git من موجه الأوامر العادي. والجواب: لا توجد طريقة خاصة، فقط نفّذ git status إذا كان Git في PATH.
كيف تفتح Git Bash
من قائمة «ابدأ»
اكتب «Git Bash» وشغّل التطبيق. ستُفتح الطرفية في المجلد الشخصي للمستخدم: /c/Users/الاسم، ويُرمز له في bash بـ ~.
في المجلد المطلوب عبر القائمة السياقية
أسهل طريقة: في Explorer انقر بزر الفأرة الأيمن على مساحة فارغة داخل مجلد المشروع واختر «Open Git Bash here». وفي Windows 11 يكون هذا البند مخفياً تحت «إظهار خيارات إضافية» (أو Shift + النقر الأيمن).
في طرفية VS Code
افتح الطرفية (Ctrl + `)، واضغط السهم بجانب «+» واختر Git Bash. ولكي تُفتح دائماً به، نفّذ الأمر «Terminal: Select Default Profile» واختر Git Bash.
في Windows Terminal
قد يضيف Git for Windows ملف تعريف Git Bash إلى Windows Terminal بنفسه (خيار في معالج التثبيت). وإذا لم يوجد الملف، أنشئ ملفاً جديداً بالأمر C:\Program Files\Git\bin\bash.exe -i -l.
المسارات والملفات: الفرق الأساسي عن Windows
في Git Bash تُكتب المسارات بصيغة Unix. يتحول القرص C: إلى /c، وتتحول الشرطات المائلة الخلفية إلى أمامية.
| Windows | Git Bash |
|---|---|
C:\Users\Anna\projects | /c/Users/Anna/projects |
D:\work | /d/work |
%USERPROFILE% | ~ أو $HOME |
إذا كان في المسار مسافات فضعه بين علامتي تنصيص: cd "/c/Users/Anna/My Projects". ولفتح المجلد الحالي في Explorer استخدم explorer .، ولفتحه في VS Code استخدم code ..
أوامر Git Bash الأساسية للمبتدئ
التنقل والملفات
pwd # أين أنا الآن
ls -la # قائمة الملفات بما فيها المخفية (.git، .gitignore)
cd projects/site # الدخول إلى مجلد
cd .. # الصعود مستوى واحداً
mkdir new-app # إنشاء مجلد
touch index.html # إنشاء ملف فارغ
cat README.md # عرض المحتوى
rm file.txt # حذف ملف
rm -r old-folder # حذف مجلد مع محتوياته
clear # مسح الشاشة
أول مستودع مباشرة في Git Bash
$ mkdir my-first-repo && cd my-first-repo
$ git init
Initialized empty Git repository in C:/Users/Anna/my-first-repo/.git/
$ echo "مرحباً Git" > hello.txt
$ git add hello.txt
$ git commit -m "إضافة hello.txt"
$ git log --oneline
بعد git init يتغير سطر الأوامر: يظهر اسم الفرع بين قوسين. هذه طريقة سريعة لتعرف أنك داخل مستودع.
حيل مفيدة
- Tab — إكمال تلقائي للأوامر والفروع والملفات. اضغطه مرتين لرؤية الخيارات.
- السهم لأعلى — الأمر السابق؛ و
history— كل السجل؛ وCtrl + R — البحث في السجل. - النسخ/اللصق — في MinTTY يُنسخ التحديد بالفأرة فوراً، واللصق بـ Shift + Insert أو بزر الفأرة الأيمن. وCtrl + C في الطرفية يوقف الأمر ولا ينسخ.
- q — الخروج من العرض المقسَّم إلى صفحات (
git logوgit diffيُفتحان فيless). - Esc ثم :q! ثم Enter — الخروج من Vim إذا فُتح لكتابة رسالة commit.
Git CLI: لماذا يستحق تعلم سطر الأوامر
Git CLI هو واجهة سطر الأوامر في Git، أي الأوامر نفسها git .... الواجهات الرسومية مفيدة لعرض التاريخ، لكن لها حدود: ليست كل العمليات متاحة فيها، وعند الخطأ لا يشرح الزر ما الذي يحدث. أما سطر الأوامر فيمنحك تحكماً كاملاً ورسائل تفصيلية.
حجة أخرى: في المقابلة وفي فريق غريب سيُطلب منك أن تُظهر كيف تلغي commit أو تحل تعارضاً، وواجهات كل شخص مختلفة، أما الأوامر فهي واحدة في كل مكان. والاستراتيجية الجيدة: اعمل بـ CLI، واستخدم الواجهات الرسومية أو أدوات IDE لعرض الفرق والتاريخ.
ضبط Git Bash حسب رغبتك
الاختصارات في ~/.bashrc
يقرأ Git Bash عند التشغيل الملفين ~/.bash_profile و~/.bashrc. أضف إليهما اختصارات:
alias gs='git status'
alias gl='git log --oneline --graph --all'
alias ll='ls -la'
لكي تُطبَّق التغييرات دون إعادة التشغيل نفّذ source ~/.bashrc. وإذا ظهر تحذير عند التشغيل بأن .bashrc موجود وأن .bash_profile غير موجود، فسينشئ Git Bash ملف .bash_profile بنفسه — وهذا طبيعي.
الاختصارات داخل Git نفسه
يمكن أن تحفظ الاختصارات داخل Git، فتعمل في أي طرفية:
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all"
الآن يعمل git st وgit lg في Git Bash وفي PowerShell.
المظهر
يُضبط الخط والحجم والألوان والشفافية بالنقر الأيمن على شريط عنوان النافذة ← Options. وفي قسم Text تأكد من اختيار ترميز UTF-8.
مشكلات شائعة في Git Bash
رموز غريبة بدلاً من الحروف العربية في git log
يساعد عادةً ضبط الترميز UTF-8 في Options ← Text، وإضافة السطر export LANG=ru_RU.UTF-8 إلى ~/.bashrc (استبدل اللغة بلغتك إن أردت). ولأسماء الملفات غير اللاتينية في git status نفّذ git config --global core.quotepath false — وإلا ستظهر على شكل تسلسلات مهربة مثل \320\277.
البرامج التفاعلية تتجمد
بعض البرامج الطرفية (مثل مفسر Python أو node بدون معاملات) تتصرف بغرابة في MinTTY. شغّلها عبر winpty: winpty python، أو استخدم Git Bash داخل Windows Terminal.
المسارات تتحول إلى شيء غريب
يحوّل MSYS تلقائياً المعاملات التي تشبه مسارات Unix إلى مسارات Windows. وأحياناً يسبب ذلك مشكلة، مثلاً عند تمرير /app إلى docker run. والحل: كرر الشرطة المائلة (//app) أو اضبط MSYS_NO_PATHCONV=1 للأمر.
«Permission denied (publickey)» عند push
مفتاح SSH غير منشأ أو غير مضاف إلى GitHub. أنشئ المفتاح في Git Bash بالأمر ssh-keygen -t ed25519 -C "you@example.com"، وأضف محتوى ~/.ssh/id_ed25519.pub إلى إعدادات GitHub، وتحقق بـ ssh -T git@github.com.
Git Bash أم WSL
WSL هو Linux حقيقي داخل Windows بنظام ملفات وحزم خاصة به. وهو مطلوب إذا كنت تطور لبيئة Linux: تشغّل Docker، وتترجم، وتستخدم مكدس الخوادم. أما Git Bash فأبسط وأخف، ولأغراض Git وحدها يكفي تماماً. المهم ألا تخلط: المستودع المستنسخ داخل WSL يُدار بـ Git من داخل WSL، والمستودع الموجود على القرص C: يُدار بـ Git for Windows.
الخلاصة
Git Bash طرفية فيها bash وأدوات Unix، وتأتي مع Git for Windows. وهو يجعل Windows متوافقاً مع توثيق Git وتعليماته، ويوفر SSH جاهزاً، ويعرض الفرع في سطر الأوامر. أما Git CMD فهو Git نفسه في موجه الأوامر العادي دون أدوات Unix. وللتعلم والعمل اليومي في Windows اختر Git Bash — ففي دورة Git يُستخدم كطرفية أساسية في التمارين العملية.
الأسئلة الشائعة
هل Git Bash مجاني؟
نعم، Git Bash جزء من Git for Windows ويُوزَّع مجاناً بترخيص مفتوح.
هل يمكن تثبيت Git Bash دون Git؟
لا، يُثبَّت Git Bash فقط مع Git for Windows. وإذا كان Git مثبتاً فسيكون Git Bash موجوداً في قائمة «ابدأ».
هل يوجد Git Bash على macOS وLinux؟
لا يوجد برنامج منفصل ولا حاجة إليه: الطرفية المدمجة في macOS وLinux تعمل بالفعل بـ bash أو zsh وأدوات Unix.
أين يحفظ Git Bash المجلد الشخصي والإعدادات؟
المجلد الشخصي هو C:\Users\الاسم، ويُعرف في bash بـ ~. وفيه تُحفظ ملفات .bashrc وbash_profile. و.gitconfig ومجلد .ssh.
هل يمكن تشغيل ملفات bat وexe في Git Bash؟
نعم، تُشغَّل برامج Windows بالاسم أو بالمسار، مثل ./build.bat أو notepad file.txt.
يُشرح هذا الموضوع بالتفصيل مع التطبيق العملي في دورة «Git من الصفر إلى مطور واثق».
الانتقال إلى الدورة