---
title: When to Undoredo
localeTitle: متى Undoredo
---
ستحتاج عادة إلى UNDO / REDO عند ارتكاب بعض التغييرات في git ، وإدراك أن التغييرات تحتاج إلى إزالتها أو استعادتها. هذا أمر شائع جدًا في السيناريوهات على سبيل المثال ، عند إجراء تغيير مؤقت على بعض الملفات ، ونسي أن تعود إليهم ، ثم شرع في إضافتها لارتكاب الخطأ.

## سير عمل UNDO / REDO:

بافتراض أنك أجريت بعض التغييرات وقدمت تعهدات مثل:

 `git commit -m "Commit 1 - Some changes to the code" 
 git commit -m "Commit 2 - Some MORE changes to the code" 
` 

1.  (UNDO-ing): العودة إلى الوراء على آخر استعادة `git reset --soft HEAD~`
2.  _هل التغييرات._
3.  أضف ملفاتك إلى gath area `git add <filenames or paths>` أو `git add --all`
4.  (REDO-ing): هل ارتكبت. `git commit -c ORIG_HEAD` or `git commit -C ORIG_HEAD`

## كيف يعمل هذا؟

الآن بعد أن عرفت أن التدفق يتيح فهم كيفية عمل ذلك خلف الكواليس.

1.  `Step 1` تعيد تعيين الالتزام الأخير أي `"Commit 2 - Some MORE..."` إلى `"Commit 1 - Some..."` ارتكاب.
2.  في `Step 2` ، تقوم بالتغييرات التي تراها مناسبة للملفات.
3.  في `Step 3` ، يمكنك إضافة الملفات التي تم تغييرها إلى منطقة التدريج إما بشكل انتقائي مع `git add <filenames>` أو كافة الملفات مع `git add --all` .
4.  في الخطوة الأخيرة ، تلتزم بالتغييرات في منطقة التدريج.

ملاحظة: يمكنك استخدام `-c` أو `-C` . سيعمل المصغر `-c` على فتح محرر لتعديل رسالة الالتزام ، وفي هذه الحالة سيتم `Commit 2 - Some MORE...` يمكنك تحرير رسالة الالتزام كما تريد.

أو بدلاً من ذلك ، يمكنك استخدام `-C` ، حيث ستقوم بوابة git بتخطي نافذة المحرر وإعادة استخدام رسالة ارتكاب _LAST_ التي هي مرة أخرى في هذه الحالة هي `Commit 2 - Some MORE...`

يُعرف إعادة استخدام رسالة الالتزام "نفسه" أيضًا بإعادة / إعادة الإلزام.

## دون خشبة قبل ارتكاب

للتراجع عن التغيير الذي تم إجراؤه قبل الالتزام ، قم بتشغيل `git reset <file>` أو `git reset` لإلغاء تثبيت كافة التغييرات قبل الالتزام.

ملاحظة: في الإصدارات القديمة من git ، كانت الأوامر `git reset HEAD <file>` و `git reset HEAD` على التوالي. تم تغيير هذا في Git 1.8.2

## بعض الحيل:

يمكنك العودة إلى أي عدد من `git reset --soft HEAD~n` باستخدام `git reset --soft HEAD~n` حيث تريد التراجع عن `n` الأخيرة.

## النسبة:

تستند هذه المقالة إلى سؤال Stack Overflow [هنا](http://stackoverflow.com/questions/927358/how-do-you-undo-the-last-commit/927386#927386) [وهنا](http://stackoverflow.com/questions/348170/undo-git-add-before-commit/348234#348234) .