Git
ما هو Git؟
يكتب Git كل حفظ في نقطة اسمها commit. الـ commit ليس نسخة كاملة من المشروع، بل الفرق عن الحالة السابقة. يبقى التاريخ على جهازك. GitHub وGitLab موقعان لمشاركة ذلك التاريخ. ليسا Git نفسه.
فيمَ يُستخدم Git؟
Git مفيد حتى حين يعمل شخص واحد. هو للرجوع عن تغيير سيئ وأخذ كود غيرك دون خلطه باليد.
- الرجوع إلى ما قبل commit سيئ
- إبقاء فكرتين في فرعين
- إرسال الكود الجاهز فقط إلى الخادم
- لمس الملف نفسه مع الفريق
ماذا يمكن فعله باستخدام Git؟
بـ Git تتابع مجلداً وتختار تغييراً وتعمل له commit وتفتح فرعاً وترسله إلى عنوان بعيد. يمكن النظر إلى commit قديم وإعادة الملف إلى حال ذلك اليوم. Git نفسه لا يشغّل موقعاً ولا يفحص الكود.
هل تعلم Git صعب؟
الأوامر الثلاثة الأولى سهلة: status وadd وcommit. تبدأ الصعوبة مع الفرع والدمج والتعارض. حين يغيّر شخصان السطر نفسه لا يختار Git النسخة الصحيحة وحده. السر وكلمة المرور والملف الكبير لا يدخلون commit.
المزايا والحدود
الميزة: يبقى التاريخ ويمكن التراجع عن الخطأ ويعمل عدة أشخاص في مشروع واحد. الحد: Git ليست خدمة نسخ احتياطي وليست الموقع على الخادم. رسالة commit يجب أن تكون قصيرة وواضحة وإلا لا يُقرأ التاريخ.
أفكار أساسية
مجلد العمل والـ commit والعنوان البعيد ثلاثة أماكن. الفرع خط ينفصل عن التاريخ نفسه.
- status يُظهر ما تغيّر
- add يضع الملف المختار في الـ commit التالي
- commit ينشئ نقطة مع رسالة
- push يرسل تلك النقطة إلى العنوان البعيد
مثال قصير
هذه الأوامر الثلاثة تنظر إلى الحالة وتختار الملفات وتحفظها برسالة قصيرة. اكتب الرسالة حسب تغييرك.
git status git add . git commit -m "First note"
أمثلة تعمل
الأسطر الثلاثة أعلاه تحفظ كل شيء دفعة واحدة. هذه الأمثلة تعمل عملاً أصغر وتقول ماذا يجب أن يظهر على الشاشة. شغّلها في مجلد هو أصلاً مشروع Git. إذا قال git status إن هذا ليس مستودعاً فالمجلد لم يُبدأ بـ git init.
حفظ ملف واحد لا المجلد كله
status يسرد ما تغيّر وما لم يتابعه Git بعد. add note.txt يختار ذلك الملف فقط للحفظ التالي. الملفات الأخرى المتغيرة تبقى خارجاً. commit يكتب النقطة. النص بين التنصيص هو الرسالة. يجب أن يقول ماذا فعلت لا كلمة update فقط. إذا كتبت git add . فكل تغيير في المجلد يدخل النقطة نفسها.
git status git add note.txt git commit -m "Add the note"
بعد الـ commit يقول git status إن مجلد العمل نظيف. note.txt في التاريخ. الملف الثاني الذي لم تضفه ليس فيه.
رؤية الأسطر المتغيرة قبل الحفظ
diff يُظهر الفرق بين الملف الآن وآخر commit. السطر الذي يبدأ بـ + أُضيف. السطر الذي يبدأ بـ - حُذف. هذا ليس commit. لا شيء يُحفظ بعد. إذا لم يتغير شيء فالأمر لا يطبع شيئاً. اقرأ هذا قبل add كي لا تحفظ كلمة مرور أو سطراً ناقصاً بالخطأ.
git diff
الشاشة مقارنة لا نقطة جديدة في التاريخ. إغلاق الطرفية لا يرجع التعديل في الملف.
قراءة التاريخ في أسطر قصيرة
log يسرد الـ commit. --oneline يضع كل واحد في سطر واحد. أحدث commit في الأعلى. الكلمة القصيرة في البداية هي المعرّف. تستعمله حين تحتاج أن تنظر إلى نقطة قديمة. الرسالة هي النص الذي كتبته في commit. إذا كانت كل الرسائل update فالقائمة لا تقول ماذا تغيّر.
git log --oneline
ترى سطراً لكل حفظ. السطر الأعلى هو آخر commit. الأقدم تقف تحته.
إرسال خطوتك وأخذ خطوة غيرك
push يرسل الـ commit التي على حاسوبك إلى العنوان الذي ربطته، غالباً GitHub. pull يجلب الـ commit التي على ذلك العنوان وليست على جهازك. ليسا الأمر نفسه. push لا ينزّل عمل زميلك الجديد. pull لا يرفع عملك. إذا توقف pull وتحدث عن تعارض فالسطر نفسه تغيّر في المكانين. Git لا يختار السطر الصحيح. أنت تختاره.
git push git pull
بعد push نظيف يكون آخر commit عندك على الموقع. بعد pull نظيف يكون في مجلدك ما كان على الموقع فقط.
أسئلة شائعة
- هل Git وGitHub الشيء نفسه؟ لا. Git الأداة. GitHub موقع يحفظ ذلك التاريخ.
- هل Git للكود فقط؟ هو أساساً لملفات النص. الصور والفيديو طريق ضعيف.
- هل كل حفظ commit؟ لا. تختار الملف أولاً ثم تكتب الـ commit.