بسم الله الرحمن الرحيم
اليوم الدرس الخامس من شرح جِت، وكل الهذه الدروس من الأساسات التي لا غنى لك عنها في استعمال جِت Git في كل مشروع، فعليها سنبني كل معلومة ستأتي، وقد عمدت إلى جعل كل مقال يتناول شيئًا أو شيئين حتى تفهم جِت وتعود إلى الدرس المُراد عند الحاجة بسرعة، فعليك بها ولا تستحقرها وفقك الله!
حذف الملفات
إن جربت حذف ملف من جِت بالطريقة العادية فلن ينحذف منه، فإن جربنا الآن حذف الملف file ثم كتبنا الأمر git status سيظهر لك:
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: file_number2
no changes added to commit (use "git add" and/or "git commit -a")
راه يخبرك في (تغييرات لم تعد للإيداع changes not staged for commit) أن الملف حُذِفَ deleted، فلم ينفع حذف الملف كما نحذف أي ملف آخر في حاسوبنا، فكيف نحذفه؟
لحذف الملف في جِت علينا حذفه من حالة (ملف مُتعقّب tracked files) ثم نودع commit، ولِمَ نودعه؟ نودعه ليسجل جِت الحذف، وأيضًا إن لم تودعه فلن تقدر على إرجاعه وسيضيع منك.
تحذف الملف في جِت باستعمال الأمر:
git rm file_name
أي تكتب git ثم أمر الحذف rm، اختصارا لكلمة remove، ثم اسم الملف، بهذا الأمر سينحذف الملف من جِت ومن حاسوبك، أي من مجلد العمل working directory.
نعم، سيحذفه من حاسوبك!
إن لم تُرِدْ من جِت أن يتتبعه مع المحافظة عليه في جهاز فأضف اللاحقة cached– إلى الأمر git rm هكذا:
git rm --cached file
هكذا لن يحذفه من جهازك ولن يتتبعه فقط. وهذا الأمر نافع عندما يتتبع جِت ملفات بالخطأ.
إضافة أخيرة، إن أردت حذف ملف عدلت فيه ولم تودع هذه التعديلات فلن يحذفه الأمر git rm وسيقول لك:
error: the following file has local modifications:
file
(use --cached to keep the file, or -f to force removal)
ترجمته أن الملف عُدِّل ولا يقدر على حذفه، إن أردت حذفه استعملت اللاحقة cached– أو f-، اختصارًا لكلمة force وتعني قسرًا (إجبارًا) هكذا:
git rm -f file
فاللاحقة f- تقول لجِت احذفه وإن كان معدَّلًا وفيه تغييرات لم تودَع، فلا تعبأ بضياعها.
نقل الملفات
كما الحذف، إن نقلت ملفًا من مجلد إلى آخر في نفس مجلد العمل فلن يعرف جِت ذلك، بل سيقول إن الملف القديم حُذِف وأتى ملف جديد غير متعقب، والأمر نفسه إن غيرت اسمه فلن يعرف ذلك، بل سيقول لك الملف القديم حُذِف وأتى ملف جديد، انظر:
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: file.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
new_file
no changes added to commit (use "git add" and/or "git commit -a")
فكيف ننقل الملف يا مبعسس؟
بأمر النقل الذي في جِت، فعنده أمر اسمه mv اختصارًا لكلمة move، أي النقل، ويكون هكذا:
git mv old_file new_file
هنا غيرنا اسم الملف القديم وهو old_file إلى الاسم الجديد وهو new_file، فصار الأمر للنقل والتسمية rename، فللأمر استعمالين، الأول وهو النقل والآخر التسمية.
الأمر اختصار ثلاثة أوامر هي على الترتيب:
mv old_file new_file
git rm old_file
git add new_file
فتفكَّر!
أما لنقل ملف من المجلد الأول إلى المجلد الثاني نكتب:
git mv first_Directory/my_file second_directory/
الملف my_file في المجلد first_Directory سينتقل إلى المجلد second_directory.
تخطي مرحلة الإعداد
مكافأة صغيرة قبل الختام
قد تكون مستعجلا ولا تريد إدخال الملف إلى مرحلة الإعداد (بالأمر git add) ثم إلى الإيداع، وتريد بسرعة رميه إلى مرحلة الإيداع commit، لأي سبب كان، مثل تغيير صغير سريع، وذلك يتم بإضافة اللاحقة a- إلى أمر الإيداع، والتي تعني الكل all، كل التغييرات.
يكون الأمر هكذا:
git commit -a -m "adding a word to README"
لا تنس أن اللاحقة m- تعني رسالة message، فعليك كتابة رسالة تخبر فيها عما فعلته في الإيداع هذا…
الخاتمة
ها قد وصلنا إلى نهاية المقال، وها أنا أخط بقلمي الخطوط الأخيرة لهذا المقال الشائق، وأرجو إني قد وفِّقت في الشرح.
وفي نهاية الأمر لا يسعني سوى أن أشكرك على حسن قراءتك لهذا المقال، وأني لبشر أصيب وأخطِئ، فإن وفِّقت في طرح الموضوع فمن اللّٰه عز وجل وإن أخفقت فمن نفسي والشيطان.
أرجو منك تقييم كفاءة المعلومات من أجل تزويدي بالملاحظات والنقد البناء في خانة التعليقات أو عبر حساب الموقع، والسلام عليكم ورحمة اللّٰه تعالى وبركاته.