أنقذ اليوم مع Git واحذف من سجل التعديلات

هل واجهت أي أخطاء أو واجهت مشاكل مع التزامات Git أثناء العمل مع Git؟ ربما تم حفظ سر غير صحيح أو بيانات حساسة. لحسن الحظ، يمكنك معالجة ملفاتك مع Git وإزالتها من التزام وإصلاح التاريخ.

إذا قمت بعمل عدة تزامنات أو استنسخت مستودعًا بتاريخ تزامن موجود بالفعل، فإنك عادةً ترغب في النظر إلى الوراء ورؤية جميع التزامات تم إجراؤها. وفي هذا البرنامج التعليمي، ستتعلم كيفية إزالة إدخال من تاريخ Git الخاص بك.

استمر في القراءة وأنقذ اليوم مع Git!

المتطلبات الأساسية

يتكون هذا البرنامج التعليمي من تعليمات تفصيلية خطوة بخطوة. إذا كنت ترغب في متابعة، تأكد من وجود ما يلي:

  • A local machine to test the Git commands – This tutorial uses Windows 10, but later versions will also work.
  • Git Bash – يستخدم هذا البرنامج التعليمي Git Bash 2.36.

إزالة ملف من التزام Git

عندما تعمل على Git كفريق، تقوم بعمل مئات من التزامات يومياً. نتيجة لذلك، هناك فرص كبيرة للحاجة إلى التراجع عن تزامن معين، مثل بسبب ملف غير صحيح أو ملفات متعددة. يتسبب هذا الطلب عادةً بسبب تغيير في الشيفرة أو التكوين ويصبح مشكلة.

لحل هذه المشكلة، ستحتاج إلى إزالة الملف أو الملفات المتعددة من تزامن Git من خلال تشغيل أوامر Git. ستستخدم أحد الأدوات الشهيرة لإزالة ملف واحد من تزامن Git، أداة Git Bash.

1. افتح أداة Git Bash على جهاز الكمبيوتر الخاص بك الذي يعمل بنظام Windows.

2. بعد ذلك، قم بتشغيل الأمر التالي لإنشاء مجلد للمستودع والتبديل إلى ذلك المجلد. هذه الأوامر لا تقدم إخراجًا في وحدة التحكم. ولكن تأكد من استبدال ~/Desktop/Repository/repo1 بالمسار والاسم المفضلين لديك.

# ينشئ مجلد المستودع ومجلد repo1 الفرعي
mkdir -p ~/Desktop/Repository/repo1
# يغير مجلد العمل إلى repo1
cd ~/Desktop/Repository/repo1

3. قم بتشغيل الأوامر التالية لتهيئة مستودعك وإنشاء ملفي نص تحمل اسمي test1.txt و test2.txt.

# يهيئ المستودع المحلي (عند إنشاء مجلد مخفي .git)
git init
# ينشئ ملفي نص
touch test_file1.txt test_file2.txt
Initializes the local repository

4. الآن، قم بتنفيذ الأمر التالي لفحص حالة التزام Git.

git status

بعد تنفيذ الأمر، ستلاحظ أن التزامات Git غير المتتبعة ولم يتم تأكيدها حتى الآن، كما هو موضح أدناه.

Checking the status of Git commits on the Git terminal

5. قم بتشغيل الأمر git add أدناه لإضافة الملفين النصيين اللذين قمت بإنشائهما في الخطوة الثالثة (test_file1.txt و test_file2.txt) إلى مستودعك المحلي.

لا يقدم هذا الأمر إخراجًا ولكنه يضيف الملفات دون دفعها إلى المستودع البعيد.

git add .

6. فيما بعد، قم بتشغيل أمر git commit أدناه بحيث يتتبع Git التقدم والتغييرات التي قمت بها في المستودع المحلي.

git commit -m "Adding two new files test_file1.txt and text_file2.txt"
Committing Changes to Repository

7. بعد الارتكاز، قم بتشغيل الأمر أدناه لإزالة ملف محدد (test_file2.txt) من الارتكاز Git.

git rm --cached test_file2.txt
Removing a Specific File from the Git Commit

8. في النهاية، أعد تشغيل أمر git status أدناه للتحقق من حالة المستودع.

git status

كما يمكنك أن ترى أدناه، تمت إزالة الملف من منطقة الإعداد (الارتكاز Git) ويُعرض الملف (test_file2.txt) تحت الملفات غير المتتبعة.

Verifying the Removed Git Commit (test_file2.txt)

إزالة جميع الملفات التي تم ارتكابها مؤخرًا

لقد تعلمت للتو كيفية إزالة ملف محدد من ارتكاب Git. ولكن بشكل عام، قد تحتاج إلى حذف عدة ملفات، وGit جاهز لذلك باستخدام أمر git reset. أمر git reset هو أداة معقدة ولكن في نفس الوقت متعددة الاستخدامات للتراجع عن التغييرات في المستودع.

لرؤية كيفية عمل git reset، ستقوم بارتكاب ملفين، ثم إعادة تعيين التغييرات لإزالة الملفات التي تم ارتكابها مؤخرًا والتي تم تخزينها في ارتكاب Git:

1. قم بإنشاء ملفي نص جديدين بأسماء test_file3.txt و test_file4.txt في مجلد ~/Desktop/Repository/repo1.

touch test_file3.txt test_file4.txt

2. بعد ذلك، قم بتشغيل أمر git add أدناه، الذي لا يقدم إخراجًا ولكن يضيف الملفات النصية الجديدة إلى مستودعك المحلي (~/Desktop/Repository/repo1).

git add .

3. قم بتشغيل أمر git commit أدناه لارتكاب الملفات بحيث يحتفظ Git بتتبع التقدم والتغييرات التي قمت بها في المستودع.

git commit -m "Adding two more files"
Committing Changes to the Repository

٤. الآن، قم بتشغيل الأمر أدناه للتحقق من حالة مستودعك المحلي.

git status

كما يمكنك رؤية أدناه، يظهر الإخراج رسالة “nothing to commit”، مما يشير إلى أن كل شيء في مكانه في المستودع.

Checking the Status of Git Commits

٥. فيما بعد، قم بتشغيل أمر إعادة تعيين جيت أدناه لعكس التزامات تم إجراؤها مؤخرًا في الخطوة الثالثة. هذا الأمر لا يوفر إخراجًا ولكنه يزيل الملفات test_file3.txt و test_file4.txt.

git reset --soft HEAD~1

يمكنك أيضًا استخدام `git reset –soft HEAD^` لإزالة جميع الملفات التي تم التزامها حتى الآن.

٦. فيما بعد، أعد تشغيل أمر حالة جيت أدناه للتحقق من حالة المستودع.

git status

فيما يلي، يظهر الإخراج ملفات test_file3.txt و test_file4.txt التي يجب التزامها. يشير هذا الإخراج إلى الملفات التي يجب إزالتها من تزامن Git.

Verifying the Recent Commits were Removed

إزالة التزامات محددة من تاريخ Git

يعمل إزالة جميع الملفات التي تم التزامها بشكل رائع إذا كنت ترغب في البداية من جديد. ولكن ماذا لو كنت بحاجة فقط إلى إزالة التزام معين؟ سيقوم الأمر git revert بالأمر طالما كنت تعرف هوية التزامه.

في الخطوة الأخيرة من قسم “إزالة جميع الملفات التي تم التزامها مؤخرًا”، لاحظت أن التزامات لم تتم التزامها ولكن تغيرت. الآن ستقوم بالتزام التغييرات لرؤية أمر git revert في العمل.

قم بتشغيل أمر git commit أدناه لتنفيذ التغييرات الأخيرة على مستودعك المحلي.

git commit -m "Hello, I am committing those two files again"

بعد تشغيل الأمر، ستلاحظ أن كل من ملفات النص تم تأكيدها مرة أخرى، وهوية التأكيد هي 0315b85، كما هو موضح أدناه.

Committing the Changes in the Local Repository

الآن، قم بتشغيل الأمر git revert أدناه للرجوع عن التأكيد الذي قمت به في الخطوة السابقة. تأكد من استبدال 0315b85 بهوية التأكيد الخاصة بك.

git revert 0315b85

أدناه، يمكنك رؤية أن ملفين قمت بالتأكيد عليهما مؤخرًا قد تم حذفهما.

Reverting the Changes in the Local Repository

حذف مجلد من تاريخ التأكيد في Git

حتى الآن، أنت تعلم بالفعل كيفية حذف ملف مؤكد، ولكن ماذا عن مجلد؟ حذف مجلد من تأكيد Git يشبه حذف الملفات.

1. قم بتشغيل الأوامر أدناه، التي لا تقدم إخراجًا ولكنها تقوم بأداء الآتي:

  • أنشئ مجلدًا باسم myfolder داخل مستودعك المحلي (~/Desktop/Repository/repo1).
  • أنشئ ملفًا باسم l.txt داخل مجلد ~/Desktop/Repository/repo1/myfolder.
mkdir myfolder && touch myfolder/l.txt

2. بعد ذلك، قم بتشغيل أوامر git أدناه لإضافة المجلد الجديد (~/Desktop/Repository/repo1/myfolder) إلى مستودعك المحلي.

git add .
git commit -m "Adding folder"
Adding the new folder (folder) to the Local Repository

3. قم بتشغيل أمر git rm التالي لإزالة المجلد (myfolder) الذي قمت بالتأكيد عليه في الخطوة الثانية.

git rm -r myfolder/
Removing the New Folder (folder) in Git Commit

4. أخيرًا، قم بتشغيل أمر git status للتحقق من حالة المستودع ورؤية ما إذا كان المجلد قد تم إزالته أم لا.

git status

أدناه، يمكنك رؤية أن المجلد بأكمله (myfolder) قد تم حذفه بنجاح، جنبًا إلى جنب مع ملف l.txt داخله.

Verifying the Folder (myfolder) Has Been Removed Successfully

الاستنتاج

في هذا الدرس، لقد تعلمت كيفية العمل مع عمليات الاستدراج في Git، مثل إزالة استدراج محدد، أو ملف، أو ملفات متعددة. كما لمسنا أيضًا كيفية حذف مجلد بأكمله داخل المستودع المحلي والتزامن بالتغييرات.

في هذه النقطة، يمكنك أن تلتزم بثقة بتغييراتك في المستودع الخاص بك وإزالة الاستدراجات التي تراها غير ضرورية دون أن تقوم بإفساد الأمور.

بناءً على ما تعلمته في هذا الدرس، ما هي الطريقة التي تعتقد أنها يمكن أن تكون ممتازة للعمل مع الاستدراجات لفريقك؟

Source:
https://adamtheautomator.com/git-and-remove-from-commit/