مستودعك الأول خطوة بخطوة
أنشئ مستودعًا، واحفظ نسخًا، واطّلع على السجل، وتراجع عن الأخطاء، مع شرح كل فكرة.
Search for a command to run…
أنشئ مستودعًا، واحفظ نسخًا، واطّلع على السجل، وتراجع عن الأخطاء، مع شرح كل فكرة.
يبني هذا الدليل مشروعًا صغيرًا من الصفر. وفي الطريق تتعلم الأفكار الأربع التي يقوم عليها zev كله: مجلد العمل، ومنطقة التجهيز، والإيداعات، والسجل.
إن لم تكن قد ثبّت zev بعد، فابدأ من التثبيت.
mkdir notescd noteszev initInitialized empty Zev repository in ./.zev/المستودع (repository) مجلد يحتفظ zev بسجله. السجل كله في المجلد المخفي .zev. لا تعدّله يدويًا؛ وإن حذفته يعود المجلد عاديًا ويضيع السجل.
اضبط اسمك وبريدك مرة لكل مشروع، فهما يظهران على كل إيداع:
zev config set user.name "سارة أحمد"zev config set user.email "sara@example.com"من المفيد أن تتخيل ثلاثة أماكن:
| المكان | ما هو | كيف يصل إليه شيء |
|---|---|---|
| مجلد العمل | ملفاتك كما تراها في المحرر | أنت تعدّلها |
| منطقة التجهيز | التغييرات التي اخترتها للإيداع التالي | zev add |
| السجل | كل إيداع أنشأته، محفوظ للأبد | zev commit |
لا شيء يصل إلى السجل بالصدفة. أنت تختار ما تجهّزه، ثم تودعه.
أنشئ ملفين:
echo "شراء حليب" > todo.txtecho "أفكار للمشروع" > ideas.txtاسأل zev عمّا يراه:
zev statusOn branch mainUntracked files: (zev add <file> to start tracking; list in .zevignore to hide) ideas.txt todo.txtUntracked تعني أن zev يرى الملفات لكنه لا يحتفظ بسجلها بعد. جهّزهما وأودعهما:
zev add .zev commit -m "بداية ملاحظاتي" added ideas.txt added todo.txtStaged 2 change(s). Next: zev commit -m "what you changed"Created commit: 5f7f5e226bb19014179575681efba0f8be95eb6a8e64c1fc7dbc6f4d68224d01Committed 2 file(s)تلك السلسلة الطويلة هي معرّف الإيداع: بصمة (hash) لكل ما فيه، فلا يمكن أن يختلط بإيداع آخر. يكفي دائمًا أن تكتب أحرفه الأولى، مثل 5f7f5e22.
رسالة الإيداع الجيدة تقول ما الذي تغيّر ولماذا في كلمات قليلة: «إصلاح الدخول عندما تحتوي كلمة المرور على مسافات» أنفع لاحقًا بكثير من «إصلاح».
غيّر ملفًا وأضف آخر:
echo "شراء خبز" >> todo.txtecho "الاتصال بعلي" > calls.txtzev statusOn branch mainChanges not staged for commit: (zev add <file> to include them; zev restore <file> to throw them away) modified: todo.txtUntracked files: (zev add <file> to start tracking; list in .zevignore to hide) calls.txtانظر إلى الأسطر المتغيرة:
zev diffmodified: todo.txt@@ -1,1 +1,2 @@ شراء حليب+شراء خبز+ سطر أُضيف و- سطر حُذف. يخبرك سطر @@ -1,1 +1,2 @@ بمكان التغيير في الملف؛ يمكنك تجاهله في البداية.
الآن أودِع todo.txt وحده، واترك calls.txt لوقت لاحق:
zev add todo.txtzev diff --stagedzev commit -m "إضافة الخبز إلى القائمة"يعرض zev diff --staged بالضبط ما سيحتويه الإيداع التالي. من العادات الجيدة أن تراجعه قبل الإيداع.
zev logأحدث إيداع في الأعلى. عرض أقصر، سطر لكل إيداع:
zev log --onelineلرؤية إيداع واحد وما غيّره بالضبط:
zev show 5f7f5e22 # ببداية معرّفهzev show HEAD # أحدث إيداعzev show HEAD~1 # الذي قبلهHEAD تعني «الإيداع الذي أنت عليه الآن». HEAD~1 الذي قبله، وHEAD~2 الذي قبلهما، وهكذا.
الجميع يخطئ. إليك كيف تخرج من الأخطاء الشائعة.
التخلّص من تغييرات لم تجهّزها (العودة إلى نسخة آخر إيداع):
zev restore todo.txtانتبه: التغييرات التي تتخلص منها تضيع نهائيًا لأنها لم تُودَع قط.
إلغاء تجهيز ملف (تبقى تعديلاتك، لكنه لن يدخل الإيداع التالي):
zev restore --staged todo.txtوضع التغييرات جانبًا لحظة (مثلًا لتنظر في شيء آخر بمجلد نظيف):
zev stashzev stash pop # أعِدهااستعادة ملف حذفته بالخطأ (إن كان قد أُودِع من قبل):
zev restore calls.txtمواقف أخرى، مثل حذف الملفات وإعادة تسميتها، في كيف أفعل…؟.
لحذف ملف وتسجيل ذلك في الإيداع التالي:
zev rm ideas.txtzev commit -m "حذف الأفكار"الحذف بأي طريقة أخرى يعمل أيضًا؛ ثم zev add ideas.txt (أو zev add .) يجهّز الحذف.
لإعادة التسمية، غيّر اسم الملف كالمعتاد وجهّز الاسمين:
mv calls.txt phone.txtzev add calls.txt phone.txtzev commit -m "إعادة تسمية calls إلى phone"مخرجات البناء والسجلات والأسرار لا مكان لها في السجل. اذكرها في ملف اسمه .zevignore في المجلد الأعلى للمشروع:
# .zevignorenode_modules/build/*.log.envالملفات المتجاهلة لا تظهر في zev status، وzev add . يتخطاها. أودِع .zevignore نفسه ليتجاهل كل من يعمل على المشروع الملفات نفسها.