مجلد العمل
الملف على قرصك — ما يعرضه محررك. التعديلات تصل إلى هنا أولًا.
كل رسم توضيحي يقوده محاكي Git يُتحقَّق من مخرجاته مقارنةً بـ Git الحقيقي. إليك معنى كل جزء من المشهد — ومشهد حيّ لتجرّبه.
git commitاضغط ▶ وشاهد ملفًا ينتقل من القرص إلى منطقة التجهيز ثم إلى commit. لكتابة أوامرك الخاصة، افتح ساحة التجربة.
يتتبّع الجدول على اليسار كل ملف عبر الأماكن الثلاثة التي يحفظه فيها Git. تتغيّر لافتة الإصدار (v1، v2…) عندما يتغيّر المحتوى، وتومض الخلية عندما يلمسها أمر.
الملف على قرصك — ما يعرضه محررك. التعديلات تصل إلى هنا أولًا.
مسودة الـ commit التالي. ينسخ git add نسخة إلى هنا.
النسخة الموجودة في آخر commit من الفرع الذي أنت عليه.
تحت اسم كل ملف: unchanged أو modified أو staged أو untracked أو conflict… تمامًا كما يقول git status.
يرسم الجانب الأيمن مستودعك. كل ما فيه يأتي من الحالة الفعلية بعد كل أمر — لا شيء يوضع يدويًا.
commit واحد، مع الـ hash المختصر والرسالة. الـ hashes حقيقية: تُحسب من المحتوى.
يتجه من الأب إلى الابن. لـ commit الدمج أبوان، لذا يلتقي خطان.
الفرع مجرد لافتة متحركة على commit (main، feature/login…).
موقعك. يقف بجانب الفرع الذي أنت عليه، أو مباشرة على commit عندما يكون HEAD منفصلًا.
origin/main وأمثاله: آخر نسخة تعرفها من فروع الخادم، تحدّثها أوامر fetch وpull وpush.
commit غير قابل للوصول — لم يعد أي فرع يشير إليه، لكنه لا يزال موجودًا (يمكن للـ reflog إعادته).
تظهر عندما يستخدم الدرس مستودعًا بعيدًا: مستودع الخادم فوق مستودعك، لكي يُرى push وfetch وهما ينقلان الـ commits بينهما.
كل درس قائمة من أوامر Git. محاكي Git مدمج في الموقع يشغّلها في متصفحك — وقبل كل إصدار تُفحص مخرجاته سطرًا بسطر مقارنةً بـ Git 2.48 الحقيقي.
تتوقف الأوامر التفاعلية (add -p وrebase -i) عند كل سؤال لتقرأه قبل كتابة الإجابة.
عندما يفتح Git محررًا (رسالة commit، قائمة مهام rebase، رسالة وسم) يعرض المشهد الملف أثناء تحريره.
cat index.htmlcode index.htmlgit add index.htmlالدروس للمشاهدة فقط. لكتابة أوامرك الخاصة، افتح ساحة التجربة (الرابط أسفل كل رسم توضيحي): يتفاعل المخطط تمامًا كما في الدروس، وتقترح التلميحات الأوامر المرجّحة التالية عندما تتعثّر.
سطر سرد مثل «زميل يدفع…» يعني أن شخصًا آخر غيّر الخادم — وهذا سبب تصرّف push أو pull لاحق بتلك الطريقة.
تُقسَّم الخطوة إلى مراحل. كل مرحلة تغيّر شيئًا واحدًا وتشرحه في تعليق أسفل المشهد؛ وكل ما عداه يخفت.
يُكتب الأمر قبل أن يتحرك أي شيء، ولا تتغيّر اللوحات إلا عندما يصل أثره.
2b4c917 — لقطة لكل ما في منطقة التجهيز.main إليه (ويتبعه HEAD — فهو يشير إلى main)ما حدث للتو ولماذا، في جملة واحدة. اللوحة بجانب الطرفية تكرّره مع شرح الخطوة.
git log --onelineecho "cart.push(item)" >> app.jsecho "export function login() {}" > login.jsgit statusgit add app.js login.jsالقائمة المرقّمة أسفل الشرح. انقر أي خطوة للانتقال إليها.
شغّله كفيديو أو تقدّم خطوة بخطوة.
إعادة التشغيل، الخطوة السابقة، تشغيل / إيقاف مؤقت، الخطوة التالية.
اسحب للانتقال إلى أي لحظة من الدرس.
من 0.5× إلى 2×.
انقر على المشهد، ثم مفتاح المسافة = تشغيل / إيقاف مؤقت، و← / → = الخطوة السابقة / التالية.
أين توجد الرسوم التوضيحية.
--force-with-leaseGit ≥ 1.8.5موصى بهيغطي الرسم التوضيحي الرئيسي الاستخدام اليومي للأمر. لكل خيار رسم قصير خاص به — افتحه من قائمة الخيارات.
يحمل كل خيار شارة: موصى به، أو عند الحاجة، أو غير موصى به، مع سبب في سطر واحد.
افتح الـ diff في محررك قبل التجهيز. يمكنك اختيار التغييرات التي تدخل يدويًا.
$ git add -e app.jsيفتح git add -e الـ diff كله كـ patch في محررك؛ تحذف الأسطر التي لا تريد تجهيزها ويطبّق git ما تبقّى. إنه ملف يُعدَّل يدويًا، لا تغيير في حالة المستودع يمكن للمسرح تحريكه — وgit add -p هو المكافئ المرئي.
بعض الخيارات تعتمد على أشياء خارج المستودع (محرّرك، أذونات الملفات، نهايات الأسطر). لها بطاقة شرح بدل الرسوم المتحركة.
$ git switch -c feature/login$ echo "export function login() {}" > login.js && git add login.js && git commit -m "Add login page"$ echo "login()" >> app.js && git commit -am "Call login on load"عروض من الواقع تُشغَّل كقصة متصلة، مقسّمة إلى أقسام بعناوين يمكنك النقر عليها.
يضم زر الترس في الترويسة الإعدادات: اللغة، والموقع الفاتح أو الداكن، وسمة الرسوم التوضيحية، ووضع عمى الألوان، وحجم النص.
اتبع سير عمل كاملًا، أو اختر أمرًا.