ورقة غش أوامر 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) المحلية إلى المستودع البعيد.