الوحدة 1 · نموذج Git
التثبيت والإعداد وأول commit لك
16 دقراءة 4 داملأ الفراغات
الدرس في لمحة
ثبّت Git، واضبط اسمك وبريدك والفرع الافتراضي والمحرّر مرة واحدة، ثم حوّل مجلد موقعك الشخصي إلى repository وسجّل أول commit فيه.
لا فيديو هنا، بل الشيء الحقيقي: درس مكتوب وأمثلة قابلة للتشغيل واختبار وتدريب.
قبل أن يسجّل Git أي شيء، يحتاج إلى معلومتين عنك وبعض التفضيلات. تضبطها مرة واحدة لكل حاسوب، وتؤثّر بهدوء في كل commit تنشئه لسنوات. عشر دقائق الآن توفّر عليك مئات الـ commits المنسوبة إلى «مجهول» أو إلى عنوان بريد لم تعد تملكه.
ثبّت Git
تحقّق أولًا هل Git مثبّت لديك:
git --versionإن رأيت شيئًا مثل git version 2.51.0 فأنت جاهز؛ أي إصدار 2.4x أو أحدث يناسب هذا الكورس. وإن لم يكن مثبّتًا:
- macOS: تشغيل
git --versionيعرض عليك تثبيت Xcode Command Line Tools، وهي تتضمّن Git. وإن كنت تستخدم Homebrew، فالأمرbrew install gitيمنحك إصدارًا أحدث. - Windows: ثبّت Git for Windows من git-scm.com. أبقِ الخيارات الافتراضية؛ فهي تتضمّن Git Bash (طرفية يعمل فيها كل أمر في هذا الكورس) و Git Credential Manager الذي ستستخدمه في القسم الثالث.
- Linux: استخدم مدير الحزم لديك، مثلًا
sudo apt install gitعلى Ubuntu أوsudo dnf install gitعلى Fedora.
عرّف Git بنفسك
يخزّن كل commit اسم المؤلف وبريده. اضبطهما على المستوى العام (global)، أي لحساب المستخدم الخاص بك على هذا الجهاز:
git config --global user.name "Maya Okafor"
git config --global user.email "maya.okafor@example.com"البريد أهمّ مما يبدو. يحدّد GitHub الصورة والملف الشخصي اللذين يظهران بجانب الـ commit بمطابقة البريد المخزّن داخله مع العناوين المسجّلة في حسابات GitHub. وإن كنت تفضّل ألّا تنشر عنوانك الحقيقي، فإن GitHub يعطي كل حساب عنوان noreply بالشكل 12345678+username@users.noreply.github.com (تجده في Settings ثم Emails)، ويمكنك استخدامه بدلًا من عنوانك.
ثلاثة تفضيلات تستحق الضبط الآن
git config --global init.defaultBranch main
git config --global core.editor "code --wait"
git config --global --listinit.defaultBranch mainيسمّي الفرع الأول في كل repository جديدmain، وهو ما يطابق ما ينشئه GitHub. ودونه، ما زالت إصدارات Git 2.x تسمّي الفرع الأولmasterوتطبع تلميحًا طويلًا عن ذلك.core.editorهو البرنامج الذي يفتحه Git حين يحتاج منك كتابة نص، مثل رسالة الـ commit. كثير من التثبيتات تستخدم Vim افتراضيًا، وهذا يفاجئ من لا يعرفه.code --waitيستخدم VS Code (والخيار--waitيُبقي Git منتظرًا حتى تغلق التبويب)؛ وnanoخيار بسيط داخل الطرفية.--listيطبع ما ضبطته لتتحقّق من الأخطاء الإملائية.
تُحفظ هذه الإعدادات في ملف نصي عادي هو ~/.gitconfig. والإعداد الذي يُضبط دون --global من داخل repository ما ينطبق على ذلك الـ repository وحده ويتقدّم على الإعداد العام. هذا مفيد إن أردت بريد العمل في repositories العمل وبريدك الشخصي في كل مكان آخر.
أنشئ الـ repository
أنشئ مجلدًا لموقعك الشخصي وحوّله إلى repository (مستودع):
mkdir portfolio
cd portfolio
git initInitialized empty Git repository in /Users/maya/portfolio/.git/مجلد .git المخفي هذا هو الـ repository: كل commit وكل فرع وكل إعداد لهذا المشروع يعيش داخله. أما الملفات التي تعدّلها فتوجد بجانبه. لا تعدّل أي شيء داخل .git بيدك، واعلم أن حذفه يحذف السجلّ ويترك ملفاتك الحالية كما هي.
أنشئ أول commit
أنشئ index.html بصفحة بسيطة:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Maya Okafor</title>
</head>
<body>
<h1>Maya Okafor</h1>
<p>Front-end developer in progress.</p>
</body>
</html>الآن اسأل Git عمّا يراه:
git statusOn branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
index.html
nothing added to commit but untracked files present (use "git add" to track)Untracked تعني أن Git يرى الملف لكنه لم يسجّله قط. إنشاء الـ commit خطوتان: اختر ما يدخل فيه، ثم سجّله.
git add index.html
git commit -m "Add home page"[main (root-commit) 3f9c2a1] Add home page
1 file changed, 11 insertions(+)
create mode 100644 index.htmlاقرأ هذا الناتج: أنت على main، وهذا هو الـ root commit (الأول، ولا أب له)، ومعرّفه المختصر 3f9c2a1. سيختلف معرّفك، لأن المعرّف hash مشتقّ من المحتوى واسمك والوقت والأب. شغّل git log لترى الـ commit بمعرّفه الكامل ومؤلفه وتاريخه.
لماذا خطوتان بدل واحدة؟ لأن المسافة بين add و commit هي حيث تقرّر ما الذي ينتمي بعضه إلى بعض. لهذه المسافة اسم، الـ staging area (منطقة التجهيز)، وهي موضوع الدرس التالي.
أهم النقاط
- شغّل
git config --globalمرة واحدة لكل جهاز لضبطuser.nameوuser.emailوinit.defaultBranchوcore.editor؛ ويخزّنها Git في~/.gitconfig. - بريد الـ commit هو ما يحدّد حساب GitHub الذي يُنسب إليه الـ commit، لذا استخدم بريدًا يعرفه حسابك، مثل عنوان noreply.
git initينشئ مجلدًا مخفيًا اسمه.git؛ هذا المجلد هو الـ repository، وحذفه يحذف السجلّ كله.- الـ commit خطوتان،
git addلاختيار ما يدخل فيه وgit commit -mلتسجيله مع رسالة.