ورقة غش أوامر Git
Git هو نظام تحكم في إصدار موزع مفتوح المصدر يمكنه التعامل بكفاءة وسرعة عالية مع إدارة إصدارات المشاريع من الصغيرة جداً إلى الكبيرة جداً. تم تطوير Git بواسطة Linus Torvalds للمساعدة في إدارة تطوير نواة 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>"التزام بلقطة مرحلة التحضير (staging)، باستخدام <message> كرسالة التزام.
git statusسرد الملفات التي تم إضافتها لمرحلة التحضير، والملفات غير المحضرة، وغير المتتبعة.
git logعرض سجل الالتزام بالكامل باستخدام التنسيق الافتراضي.
git diffمقارنة الاختلافات بين دليل العمل (لم يتم تشغيل git add له بعد) ومنطقة التحضير (بعد git add).
التراجع عن التغييرات
git revert <commit>إنشاء التزام جديد يتراجع عن جميع التغييرات التي تم إجراؤها في <commit> وتطبيقها على الفرع الحالي.
git reset <file>إزالة <file> من منطقة التحضير مع الحفاظ على دليل العمل دون تغيير. هذا يلغي تحضير الملف دون الكتابة فوق أي تغييرات.
git clean -nإظهار الملفات التي سيتم إزالتها من دليل العمل. استخدم علم -f بدلاً من علم -n لتنفيذ عملية التنظيف.
إعادة كتابة التاريخ
git commit --amendتعديل أحدث حدث التزام Git. إذا كان دليل العمل يحتوي على تغييرات قابلة للالتزام، فسيتم الالتزام بهذه التغييرات أيضاً عند استخدام أمر git commit –amend.
git rebase <base>إعادة تعيين الفرع الحالي إلى <base>. يمكن أن يكون <base> معرف التزام، أو اسم فرع، أو علامة (tag)، أو HEAD.
git reflogعرض سجلات العمليات لجميع الفروع (بما في ذلك سجلات الالتزام المحذوفة وعمليات إعادة التعيين).
فروع Git
git branchسرد جميع الفروع. أضف معلمة <branch> لإنشاء فرع جديد باسم <branch>.
git checkout -b <branch>إنشاء فرع جديد باسم <branch> والتبديل إليه. احذف -b للتبديل إلى فرع موجود.
git merge <branch>دمج الفرع <branch> في الفرع الحالي.
المستودعات عن بعد
git remote add <name> <url>إضافة مستودع جديد عن بعد. بعد إضافة المستودع، يمكنك استخدام <name> كاختصار لـ <url> في الأوامر الأخرى.
git fetch <remote> <branch>جلب جميع تحديثات <الفرع> المحدد من المستودع، ولكن لن يتم الدمج مع الفرع المحلي.
git pull <remote>جلب النسخة البعيدة المحددة للفرع الحالي ودمجها فوراً في النسخة المحلية.
git push <remote> <branch>دفع الفرع إلى <remote>، مع الالتزامات والكائنات اللازمة. إذا لم يكن المستودع البعيد موجوداً، فسيتم إنشاء فرع باسم المستودع في المستودع البعيد.
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 log
git log -<limit>عرض آخر <limit> سجل من سجلات الالتزام.
git log --onelineعرض سجل الالتزام مع ضغط كل التزام في سطر واحد.
git log -pعرض سجل الالتزام مع عرض الفروقات الكاملة لكل التزام.
git log --statعرض سجل الالتزام، بما في ذلك الملفات التي تم تعديلها والعدد النسبي للأسطر المضافة أو المحذوفة من كل ملف.
git log --author="<pattern>"البحث عن التزامات لمؤلف محدد.
git log --grep="<pattern>"البحث في سجل الالتزام باستخدام مطابقة التعبيرات العادية.
git log <since>..<until>عرض الالتزامات التي حدثت بين <since> و <until>.
git log -- <file>عرض سجلات الالتزام التي تحتوي على الملف المحدد فقط.
git diff
git diff HEADمقارنة الاختلافات بين دليل العمل (لم يتم تشغيل git add له بعد) والمستودع (بعد git commit).
git diff --cachedمقارنة الاختلافات بين منطقة التحضير (بعد git add) والمستودع (بعد git commit).
git reset
git resetإعادة تعيين منطقة التحضير لتتطابق مع أحدث التزام، مع الحفاظ على دليل العمل دون تغيير.
git reset --hardإعادة تعيين كل من منطقة التحضير ودليل العمل إلى أحدث التزام، والكتابة فوق جميع التغييرات في دليل العمل.
git reset <commit>تحريك طرف الفرع الحالي للخلف إلى <commit> وإعادة تعيين منطقة التحضير، ولكن دون تغيير دليل العمل.
git reset --hard <commit>نفس ما سبق، ولكن يعيد تعيين كل من منطقة التحضير ودليل العمل. يحذف التغييرات غير الملتزمة وجميع الالتزامات بعد <commit>.
git pull
git pull --rebase <remote>جلب النسخة البعيدة للفرع الحالي وإعادة بنائها (rebase) فوق النسخة المحلية. استخدم git rebase بدلاً من merge لدمج الفروع.
git push
git push <remote> --forceدفع قسري (Force push).
git push <remote> --allدفع جميع الفروع المحلية إلى المستودع البعيد المحدد.
git push <remote> --tagsدفع جميع الوسوم (tags) المحلية إلى المستودع البعيد.