Skip to content

ورقة غش أوامر Git

Git هو نظام تحكم في الإصدارات موزّع ومفتوح المصدر، مصمم للتعامل مع المشاريع الصغيرة والكبيرة جدًا بسرعة وكفاءة. قام لينوس تورفالدز بتطوير Git للمساعدة في إدارة تطوير نواة Linux.

أساسيات Git

git init <directory>

إنشاء مستودع Git فارغ في الدليل المحدد. عند تشغيله بدون وسيطات، فإنه يقوم بتهيئة الدليل الحالي كمستودع Git.

git clone <repo>

نسخ المستودع الموجود في <repo> إلى الجهاز المحلي. يمكن أن يكون مستودع الأصل على نظام الملفات المحلي أو على جهاز بعيد عبر HTTP أو SSH.

git config user.name <name>

تعريف اسم المؤلف لجميع الالتزامات (commits) في المستودع الحالي.

git add <directory>

إضافة المحتويات المتغيرة في <directory> للالتزام التالي.

git commit -m "<message>"

الالتزام بلقطة المرحلة (stage snapshot)، مع استخدام <message> كرسالة للالتزام.

git status

سرد الملفات الموجودة في حالة الانتظار (staged)، وغير المنتظرة، وغير المتعقبة.

git log

عرض سجل الالتزام الكامل باستخدام التنسيق الافتراضي.

git diff

مقارنة الاختلافات بين دليل العمل (working directory) ومنطقة الانتظار (staging area).

إلغاء التعديلات

git revert <commit>

إنشاء التزام جديد يلغي جميع التغييرات التي تم إجراؤها في <commit>، ثم تطبيقها على الفرع الحالي.

git reset <file>

حذف <file> من منطقة الانتظار، مع الحفاظ على دليل العمل دون تغيير. سيؤدي هذا إلى إلغاء انتظار الملف دون الكتابة فوق أي ملفات تم تغييرها.

git clean -n

عرض الملفات التي سيتم حذفها من دليل العمل. استخدم علم -f بدلاً من -n لتنفيذ عملية التنظيف.

إعادة كتابة التاريخ في Git

git commit --amend

تعديل أحدث الالتزامات. في حالة وجود تغييرات منتظرة في دليل العمل، سيتم تضمين أحدث التغييرات معاً عند استخدام هذا الأمر.

git rebase <base>

إعادة تعيين الفرع الحالي إلى <base>. يمكن أن يكون <base> هو معرف الالتزام، أو اسم الفرع، أو العلامة (tag)، أو HEAD.

git reflog

يمكن رؤية جميع سجلات العمليات لجميع الفروع (بما في ذلك سجلات الالتزامات المحذوفة وعمليات إعادة التعيين).

فروع Git

git branch

سرد جميع الفروع. أضف وسيطة <branch> لإنشاء فرع جديد باسم <branch>.

git checkout -b <branch>

إنشاء والتحقق من (check out) فرع جديد باسم <branch>. احذف -b للتحقق من فرع موجود.

git merge <branch>

دمج فرع <branch> في الفرع الحالي.

المستودعات البعيدة

git remote add <name> <url>

إضافة مستودع بعيد جديد. بعد إضافة المستودع البعيد، يمكنك استخدام <name> كاختصار لـ <url> في الأوامر الأخرى.

git fetch <remote> <branch>

جلب كافة التحديثات لفرع <branch> المحدد من المستودع، لكنه لن يندمج مع الفرع المحلي.

git pull <remote>

جلب نسخة بعيدة محددة للفرع الحالي ودمجها فوراً في النسخة المحلية.

git push <remote> <branch>

دفع الفرع إلى <remote>، بالإضافة إلى الالتزامات والكائنات الضرورية. إذا كان المستودع البعيد غير موجود، فسيتم إنشاء فرع باسم في المستودع البعيد.

إعدادات git (git config)

git config --global user.name <name>

تعريف اسم المؤلف ليتم استخدامه لجميع الالتزامات للمستخدم الحالي.

git config --global user.email <email>

تعريف البريد الإلكتروني للمؤلف ليتم استخدامه لجميع الالتزامات للمستخدم الحالي.

git config --global alias.<alias-name> <git-command>

إنشاء اختصار (اسم مستعار) لأمر Git.

git config --system core.editor <editor>

ضبط محرر النصوص الذي تستخدمه الأوامر لجميع المستخدمين على الكمبيوتر.

git config --global --edit

فتح ملف الإعدادات العالمي في محرر نصوص للتحرير اليدوي.

سجلات git (git log)

git log -<limit>

عرض عدد <limit> من سجلات الالتزام.

git log --oneline

عرض سجل الالتزام وضغط كل التزام في سطر واحد.

git log -p

عرض سجل الالتزام مع عرض الفرق الكامل لكل التزام.

git log --stat

عرض سجل الالتزام، بما في ذلك الملفات التي تم تعديلها وعدد الأسطر النسبية المضافة أو المحذوفة من كل ملف.

git log --author="<pattern>"

البحث عن التزامات لمؤلف محدد.

git log --grep="<pattern>"

البحث في سجل الالتزام باستخدام مطابقة التعبير النمطي (regex).

git log <since>..<until>

عرض الالتزامات التي حدثت بين <since> و <until>.

git log -- <file>

عرض سجلات الالتزام التي تتضمن الملف المحدد فقط.

فوارق git (git diff)

git diff HEAD

مقارنة الاختلافات بين دليل العمل ومستودع الإصدارات (بعد git commit).

git diff --cached

مقارنة الاختلافات بين منطقة الانتظار (بعد git add) ومستودع الإصدارات.

إعادة تعيين git (git reset)

git reset

إعادة تعيين منطقة الانتظار لتطابق أحدث التزامات، مع الحفاظ على دليل العمل دون تغيير.

git reset --hard

إعادة تعيين منطقة الانتظار ودليل العمل إلى أحدث التزامات، والكتابة فوق جميع التغييرات في دليل العمل.

git reset <commit>

نقل تلميح الفرع الحالي إلى الخلف إلى <commit> وإعادة تعيين منطقة الانتظار، ولكن دون تغيير دليل العمل.

git reset --hard <commit>

نفس الخطوة السابقة، مع إعادة تعيين منطقة الانتظار ودليل العمل. حذف التغييرات غير الملتزم بها، وجميع الالتزامات التي تمت بعد <commit>.

جلب git (git pull)

git pull --rebase <remote>

جلب نسخة بعيدة للفرع الحالي وإعادة تعيينها كنسخة محلية. استخدم git rebase بدلاً من merge لدمج الفروع.

دفع git (git push)

git push <remote> --force

دفع قسري.

git push <remote> --all

دفع جميع الفروع المحلية إلى المستودع البعيد المحدد.

git push <remote> --tags

دفع جميع العلامات (tags) المحلية إلى المستودع البعيد.