سنتعرف الآن عن كيفية إنشاء مستودع جيت Git خاص بك، وكيفية إضافة الملفات إلى هذا المستودع وتنفيذ عمليات الإيداع. تحدثنا في المقالات السابقة عن كيفية التفاعل مع جيت كمستخدمين نهائيين، حيث نذهب إلى المشروع المفتوح المصدر المنشور على جيت ونقوم بنسخه إلى جهازنا للاستفادة منه.
من المعروف أن جيت هي الأداة الأفضل للتعامل مع المشاريع البرمجية الكبيرة أو الصغيرة، وحتى المشاريع الغير برمجية كما سبق وتحدثنا في المقالة الأولى، فمن الممكن أن تستخدمها لإدارة إصدارات مجلة أو يوميات أو رواية أو غيرها.
آلية عمل جيت
عندما نتحدث عن التصوير الحاسوبي (التصوير الرقمي)، فإننا نميل إلى تسميته باللقطات snapshots، أي وكأنه ألبوم صور يحتوي على صور في لحظات زمنية مختلفة، لكن عند التحدث عن جيت فربما يكون التسجيل الصوتي التشابهي وصفًا مناسبًا أكثر.
أقراص أشرطة الاستديو التقليدية تحتوي على عدة مكونات، مثل البكرات التي تدور للأمام أو للخلف، وشريط لحفظ الموجات الصوتية، ورأس تشغيل لاكتشاف الموجات الصوتية على الشريط وإخراجها للمستمع. هذه الأشرطة يمكنك تشغيلها للأمام، كما يمكنك إرجاعها للعودة إلى نقطة سابقة محددة في الشريط، كما يمكنك تقديمها للأمام إلى نقطة لاحقة.
الآن تخيل معي فرقة موسيقية في السبعينات تسجل على شريط، من المنطقي أن هذه الفرقة تتدرب مرارًا وتكرارًا على أجزاء هذه الأغنية بغية الوصول إلى الأداء المثالي، ثم بعد ذلك إنتاج الأفكار الأساسية أو الهياكل أو الترتيب الذي سيطورون منه العمل الموسيقي الخاص بهم، فربما يقررون البدء بتسجيل أصوات الطبول، ثم الجيتار، ثم الكمان، ثم الغناء. الآن في كل مرة تؤدي فيها الفرقة تسجيلًا لأحد الأصوات السابقة، يُعيد مهندس الاستوديو لف الشريط إلى نقطة البداية، أي أنه يتم تشغيل الصوت السابق في الخلفية أثناء تسجيل الصوت الثاني، أي عندما تقوم بعزف الغيتار سيكون صوت الطبول في الخلفية، وهذا ما يسمى بوضع الحلقة، حيث تتم إعادة الشريط إلى البداية بعد تسجيل كل صوت. يمكنك أيضًا نسخ واستبدال بكرة من الشريط بالكامل، في حال أردت مزج شيء جديد لاحقًا.
الآن بعد أن تعرّفنا على آلية التسجيل الصوتي في السبعينات، يمكننا أن نشبه هذه الآلية بآلية عمل جيت.
إنشاء مستودع جيت
أول خطوة هي الذهاب إلى أحد المتاجر وشراء شريط التسجيل، وهذا يكافئ المستودع في جيت حيث سننجز فيه كامل العمل الخاص. يمكن لأي مجلد موجود على حاسوبك أن يصبح مستودعًا لجيت، لكننا الآن سنقوم بإنشاء مستودع جديد عن طريق ثلاث أوامر:
- إنشاء مجلد جديد (يمكنك أيضًا إنشاؤه مباشرةً من خلال واجهة المستخدم الرسومية).
- الانتقال إلى موقع المجلد من خلال الطرفية.
- تهيئته بحيث يصبح مجلدًا يديره جيت.
وهذه هي الأوامر المطلوبة بالترتيب:
$ mkdir ~/jupiter # make directory $ cd ~/jupiter # change into the new directory $ git init . # initialise your new Git repo
الآن أصبح المجلد jupiter عبارة عن مستودع جيت ولكنه فارغ حاليًّا.
هذا كل ما يتطلب الأمر منك لإنشاء مستودع، ومن الآن أصبح بإمكانك نسخه والرجوع إلى الخلف أو الأمام في التاريخ، وإنشاء مخططات زمنية بديلة، وكل الأمور الأخرى التي يوفرها لك جيت.
العمل داخل مستودع جيت هو نفس العمل الذي تنجزه مع أي مجلد آخر؛ بمعنى عمليات إنشاء الملفات أو نسخها داخل المجلد أو حفظ الملفات فيه وغيرها من العمليات الأخرى هي نفسها مع المجلدات العادية، وجيت لا تؤدي أي عملية إلى عندما تستدعيها.
في مستودع جيت المحلي، يمكن أن يكون الملف بإحدى الحالات التالية:
- غير متتبع Untracked: ملفات يتم إنشاؤها في المستودع، ولكن لم تتم إضافتها إلى جيت حتى الآن.
- متتبع Tracked: ملف تمت إضافته إلى جيت.
- مُدرج Staged: ملف مُدرج (أو مرحلي)، أي تم إدراجه تمهيدًا إلى إيداعه في مستودع جيت.
أي ملف تضيفه إلى مستودع جيت يكون في البداية ملف غير متتبع، أي أن الملف يكون موجود على حاسوبك، لكنك لم تخبر جيت عنه حتى الآن.
جيت يخبرك بالملفات التي يتم تتبعها والتي لا يتم تتبعها من خلال الأمر git status
:
$ echo "hello world" > foo $ git status On branch master Untracked files: (use "git add <file>..." to include in what will be committed) foo nothing added but untracked files present (use "git add" to track)
كما تلاحظ، يخبرك جيت أيضًا بكيفية بدء تتبع الملفات.
استخدام جيت من خلال خدمات الويب الشهيرة
إنشاء المستودعات في جيت هاب Github وجيت لاب Gitlab أكثر سهولة، فكل ما عليك فعله هو نقرة على الزر New Repository واتباع التعليمات، ومن الممارسات الجيدة عند إنشاء المستودعات إنشاء ملف README، هذا الملف عبارة عن توضيح للهدف الذي تم إنشاء المستودع من أجله. بالنسبة لنسخ المستودع فلا يختلف الأمر عن المعتاد، لكن الحصول على إذن الكتابة على هذا المستودع في جيت هاب أكثر تعقيدًا إلى حد ما، لأنه من أجل المصادقة على جيت هاب، يجب أن يكون لديك مفتاح SSH.
في حال كنت تعمل على حاسوب مثبت عليه إحدى توزيعات لينوكس، فيمكنك إنشاء مفتاح من خلال الأمر التالي:
$ ssh-keygen
ثم انسخ مفتاحك الجديد، وهو نص عادي يمكنك فتحه في محرر نص عادي، أو استخدام الأمرcat
:
$ cat ~/.ssh/id_rsa.pub
الآن الصق مفتاحك في ملف ضبط SSH الخاص بجيت هاب، أو تكوين GitLab الخاص بك.
بما أنك نسخت مشروع جيت هاب الخاص بك عبر مفتاح SSH، ستتمكن من إعادة الكتابة إلى المستودع الخاص بك.
أو كحل بديل، يمكنك استخدام واجهة تحميل الملفات الخاصة بغيت هاب لإضافة الملفات دون الحاجة إلى استخدام جيت على نظامك.
الملفات المتتبعة
كما لاحظت منذ قليل عندما استخدمت الأمر git status
، فهو يخبرك بضرورة إضافة الملف لكي يبدأ بتتبعه، وذلك من خلال الأمر git add
الذي يقوم بوضع الملف في منقطة مرحلية خاصة تنتظر فيها الملفات إلى حين إيداعها، أو الاحتفاظ بها ضمن لقطة snapshot إلى وقت لاحق. الهدف من الأمر git add
هو التمييز بين الملفات التي تريد تضمينها في لقطة، والملفات الجديدة أو المؤقتة التي تريد أن يتجاهلها جيت، على الأقل في الوقت الحالي.
بمجرد إضافة ملف، سيتعرف عليه جيت كملف متتبع:
$ git add foo $ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: foo
إن إضافة الملف من خلال الأمر git add
لا تؤدي إلى إضافة الملف إلى نظام التتبع في جيت مباشرةً، وإنما يجهزه لذلك، أي أنه يصبح في حالة مرحلية كما ذكرنا، وفي هذه الأثناء يظل بإمكانك إجراء التعديلات عليه قبل إيداعه.
لكن انتبه، طالما لم تقم بإيداعه بعد، فلن تتمكن من العودة بالزمن للوراء، أي مثلًا في حال كنت قد وصلت لحالة مثالية في مشروعك، ثم جاء أحد أطفالك وبدأ العبث بحاسوبك ومسح كل ما أنجزته، فستكون في ورطة.
إذا رأيت أن الملف ليس جاهزًا حقًا ليتم إيداعه (حفظه في سجلات جيت)، فيمكنك حينئذٍ إخراجه من المنطقة المرحلية، تمامًا كما وصفت رسالة جيت التي رأيناها منذ قليل:
$ git reset HEAD foo
إيداع الملفات
في لحظةٍ ما لابد وأن تقرر إيداع ملفاتك، وخلال دورة حياة المشروع تختلف عدد المرات التي تقوم فيها بإيداع ملفاتك، وهذا يعود لك بالطبع، فكلما احتجت حفظ حالة معينة لحالة الملفات يجدر بك تنفيذ هذا الأمر، على سبيل المثال في حال كنت تقوم ببناء واجهة رسومية، وفي لحظةٍ ما نجحت في إظهار شكل محدد ضمن هذه الواجهة، فربما ترغب بحفظ ملفاتك عند هذه الحالة (لكيلا يُفاجئك طفلك مثلًا).
إن تنفيذ أمر الإيداع يعني تسجيل جميع الملفات الموجودة ضمن المنطقة المرحلية في المستودع، أي أن جيت يسجل الملفات التي يتم تعقبها، أي الملفات التي تمت إضافتها من خلال الأمر git add
والتي تم تعديلها منذ آخر إيداع، وفي حال لم يكن هناك أي إيداع سابق، فسيتم تضمين جميع الملفات المتتبعة في الإيداع لأنها انتقلت من حالة غير موجود إلى موجود، وهذا يمثل تعديل كبير جدًا من وجهة نظر جيت.
لتنفيذ عملية الإيداع نستخدم الأمر التالي:
$ git commit -m 'My great project, first commit.'
هذا يؤدي إلى حفظ جميع الملفات ضمن نقطة زمنية ثابتة لديها مؤشر مرجعي للرجوع إلى هذا الإيداع (هذه النقطة) في سجل جيت الخاص بك:
$ git log --oneline 55df4c2 My great project, first commit.
للحصول على تقرير مفصل أكثر، يمكنك استخدام الأمر git log
دون خيار
--oneline.
الرقم المرجعي للإيداع في هذا المثال هو 55df4c2، ويطلق عليه قيمة الإيداع المشفرة commit hash، ويمثل كل الأشياء التي سجلتها جنبًا إلى جنب مع التسجيلات السابقة، وفي حال أردت الرجوع إلى حالة سابقة (نقطة زمنية)، فيمكنك استخدام هذا الرقم المرجعي للعودة إلى الخلف، وكلما قمت بالمزيد من التغييرات والإيداعات، زاد عدد هذه التجزئات التي تعمل كمراجع إلى إصدارات مختلفة من إنتاجك، ولهذا السبب يطلقون على جيت نظام التحكم في الإصدار.
في المقالة التالية، سوف نتعرف على الأمر git head
بتفصيل أكبر، وسنكتشف معًا كيفية السفر عبر الزمن في جيت.
ترجمة -وبتصرف- للمقال Creating your first Git repository لصاحبه Seth Kenlon.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.