Git revert: Difference between revisions

From binaryoption
Jump to navigation Jump to search
Баннер1
(@pipegas_WP)
 
(@pipegas_WP)
 
Line 1: Line 1:
=== Git Revert: دليل شامل للمبتدئين ===
=== Git Revert: دليل شامل للمبتدئين ===


الغرض من نظام [[التحكم في الإصدار]]، مثل [[Git]]، هو تتبع التغييرات في [[كود المصدر]] الخاص بمشروع ما. في بعض الأحيان، قد تحتاج إلى التراجع عن تغييرات سابقة، إما لتصحيح خطأ أو لإزالة ميزة غير مرغوب فيها. هناك طريقتان رئيسيتان لتحقيق ذلك في Git: `git revert` و `git reset`. في هذه المقالة، سنركز على `git revert` بشكل خاص، ونشرح متى وكيف تستخدمه.
'''Git revert''' هي عملية قوية في نظام التحكم في الإصدار [[Git]] تسمح لك بالتراجع عن تغييرات معينة تم إدخالها في تاريخ مشروعك، دون الحاجة إلى إعادة كتابة التاريخ (كما هو الحال مع [[Git reset]]). هذا يجعلها أداة آمنة وموصى بها بشكل خاص للعمل على [[الفروع]] المشتركة مع مطورين آخرين. في هذا المقال، سنشرح مفهوم الـ revert بالتفصيل، وكيفية استخدامه، ومتى يجب عليك استخدامه بدلاً من أدوات أخرى مثل reset.


== ما هو Git Revert؟ ==
== ما هو Git Revert؟ ==


`git revert` هو أمر Git يستخدم لإنشاء [[تعهد]] (commit) جديد يعكس التغييرات التي أدخلها تعهد سابق. بمعنى آخر، فإنه يلغي تأثير التعهد المحدد دون تعديل [[سجل التعهدات]] (commit history). هذا يختلف عن `git reset`، الذي يقوم بتعديل سجل التعهدات، وهو ما قد يكون له آثار جانبية غير مرغوب فيها، خاصة عند العمل مع [[فروع]] (branches) مشتركة مع متعاونين آخرين.
تخيل أنك قمت بدمج تغييرات من فرع آخر في مشروعك، واكتشفت لاحقًا أن هذه التغييرات تسببت في حدوث خطأ أو خلل. بدلاً من محاولة تحديد التغييرات السيئة وإزالتها يدويًا، يمكنك استخدام `git revert` لإنشاء commit جديد يلغي التغييرات التي أدخلها commit معين.


== متى تستخدم Git Revert؟ ==
الـ revert لا يحذف الـ commit الأصلي. بل يقوم ببناء commit جديد يعكس (يلغي) التغييرات التي تم إجراؤها في الـ commit المستهدف. هذا يحافظ على تاريخ مشروعك كاملاً وقابلاً للتتبع، وهو أمر بالغ الأهمية للتعاون والتدقيق.


* '''عند العمل على فروع مشتركة:''' إذا كنت تعمل على فرع مشترك مع آخرين، فإن `git revert` هو الخيار الأفضل للتراجع عن تغييرات. هذا لأنه لا يعيد كتابة السجل، وبالتالي لا يسبب مشاكل للمستخدمين الآخرين الذين قد يكونون قد بنوا أعمالهم على التعهدات التي تحاول التراجع عنها.
== الفرق بين Git Revert و Git Reset ==
* '''عندما تريد الحفاظ على سجل كامل للتغييرات:''' `git revert` يحافظ على سجل كامل للتغييرات التي تم إجراؤها على المشروع، بما في ذلك التراجع عن التغييرات. هذا يمكن أن يكون مفيدًا لأغراض [[التدقيق]] (auditing) أو لتتبع تطور المشروع.
* '''عندما يكون التعهد الذي تريد التراجع عنه قد تم دمجه بالفعل:'''  إذا كان التعهد الذي تريد التراجع عنه قد تم دمجه بالفعل في فرع رئيسي (مثل `main` أو `master`)، فإن `git revert` هو الطريقة الوحيدة للتراجع عنه بأمان.


== كيفية استخدام Git Revert ==
هناك فرق جوهري بين `git revert` و `git reset`:


بناء الجملة الأساسي لأمر `git revert` هو:
* '''Git Revert:''' ينشئ commit جديدًا يعكس التغييرات. التاريخ يبقى كما هو، مع إضافة commit جديد يعكس التغييرات. آمن للعمل على الفروع المشتركة.
* '''Git Reset:''' يعيد الفرع الحالي إلى commit معين. يمكن أن يؤدي إلى فقدان البيانات إذا لم يتم التعامل معه بحذر، خاصة على الفروع المشتركة.


```
| الميزة | Git Revert | Git Reset |
git revert <تعهد_ID>
|---|---|---|
```
| **التاريخ** | يحافظ على التاريخ كاملاً | يمكن أن يعيد كتابة التاريخ |
| **الفروع المشتركة** | آمن للاستخدام | خطير للاستخدام |
| **فقدان البيانات** | لا يوجد | ممكن |
| **التعقيد** | بسيط نسبيًا | أكثر تعقيدًا |


حيث `<تعهد_ID>` هو معرّف التعهد الذي تريد التراجع عنه. يمكنك العثور على هذا المعرّف باستخدام أمر `git log`.
لمزيد من المعلومات حول [[Git Reset]] و [[Git Reflog]]، راجع المقالات المخصصة لهما.


مثال:
== كيفية استخدام Git Revert ==


للتراجع عن التعهد ذي المعرف `a1b2c3d4e5f6`, يمكنك تشغيل الأمر التالي:
أبسط طريقة لاستخدام `git revert` هي تحديد الـ commit hash الذي تريد التراجع عنه:


```
```bash
git revert a1b2c3d4e5f6
git revert <commit-hash>
```
```


سيفتح Git عادةً محرر نصوص (مثل [[Vim]] أو [[Nano]]) ليسمح لك بتحرير رسالة التعهد للتراجع. يمكنك ترك الرسالة الافتراضية أو كتابة رسالة أكثر وصفية. بعد حفظ الرسالة وإغلاق المحرر، سينشئ Git تعهدًا جديدًا يعكس التغييرات التي أدخلها التعهد الأصلي.
سيفتح هذا محرر النصوص الخاص بك مع رسالة commit افتراضية. يمكنك تعديل هذه الرسالة أو استخدامها كما هي. بعد حفظ الرسالة وإغلاق المحرر، سيتم إنشاء commit جديد يعكس التغييرات التي تم إجراؤها في الـ commit المحدد.


== خيارات Git Revert ==
مثال:


* `git revert -n <تعهد_ID>`: هذا الخيار يخبر Git بإنشاء التعهد للتراجع دون تنفيذه على الفور. هذا مفيد إذا كنت تريد تجميع عدة تراجعات في تعهد واحد.
```bash
* `git revert --no-commit <تعهد_ID>`: هذا الخيار يخبر Git بإنشاء التغييرات للتراجع ولكن لا يلتزم بها تلقائيًا. هذا يسمح لك بإجراء تعديلات إضافية قبل الالتزام بالتراجع.
git revert a1b2c3d4e5f67890abcdef1234567890
* `git revert -e <تعهد_ID>`: يفتح محرر النصوص للسماح لك بتحرير رسالة التعهد للتراجع.
```


== مثال عملي ==
إذا كنت تريد التراجع عن عدة commits متتالية، يمكنك تحديد نطاق من commits:


لنفترض أن لديك سجل تعهدات بسيطًا كالتالي:
```bash
git revert <commit-hash1>..<commit-hash2>
```


{| class="wikitable"
سيؤدي هذا إلى التراجع عن جميع الـ commits بين `commit-hash1` و `commit-hash2` (بما في ذلك `commit-hash1`، ولكن ليس `commit-hash2`).
|+ سجل التعهدات
|--
| التعهد ID | الرسالة |
| a1b2c3d | إضافة ميزة جديدة |
| e4f5g6h | إصلاح خطأ |
| i7j8k9l | إضافة اختبارات |
|--
|}


إذا أردت التراجع عن التعهد `a1b2c3d` (إضافة ميزة جديدة)، يمكنك تشغيل الأمر:
== التعامل مع التعارضات ==


```
في بعض الأحيان، قد يؤدي الـ revert إلى حدوث تعارضات (conflicts) إذا كانت هناك تغييرات أخرى قد تم إجراؤها على نفس الأسطر من التعليمات البرمجية. في هذه الحالة، سيتوقف Git ويطلب منك حل التعارضات يدويًا.
git revert a1b2c3d
```


سينشئ Git تعهدًا جديدًا يعكس التغييرات التي أدخلها `a1b2c3d`. سيكون سجل التعهدات الآن كالتالي:
لحسن الحظ، يمكن حل التعارضات بنفس الطريقة التي يتم بها حلها عند الدمج (merge). بعد حل التعارضات، استخدم `git add` لإضافة الملفات المعدلة، ثم `git revert --continue` لإكمال عملية الـ revert. إذا قررت التوقف عن الـ revert، يمكنك استخدام `git revert --abort`.


{| class="wikitable"
== متى تستخدم Git Revert؟ ==
|+ سجل التعهدات بعد التراجع
|--
| التعهد ID | الرسالة |
| a1b2c3d | إضافة ميزة جديدة |
| x9y8z7a | التراجع عن إضافة ميزة جديدة |
| e4f5g6h | إصلاح خطأ |
| i7j8k9l | إضافة اختبارات |
|--
|}
 
لاحظ أن التعهد الأصلي `a1b2c3d` لا يزال موجودًا في السجل، ولكن تم إضافة تعهد جديد (`x9y8z7a`) يعكس تأثيره.


== Git Revert مقابل Git Reset ==
* '''التراجع عن الأخطاء:''' عندما تكتشف خطأً تم إدخاله في commit معين.
* '''إلغاء الميزات:''' عندما تحتاج إلى إزالة ميزة تم إضافتها في commit معين.
* '''التعاون:''' عندما تعمل على فرع مشترك مع مطورين آخرين وتريد التراجع عن تغييرات دون التأثير على عملهم.
* '''الحفاظ على التاريخ:''' عندما تريد الحفاظ على تاريخ مشروعك كاملاً وقابلاً للتتبع.


| الميزة | Git Revert | Git Reset |
== استراتيجيات تداول الخيارات الثنائية والتحليل الفني ==
|---|---|---|
| تعديل السجل | لا | نعم |
| الأمان على الفروع المشتركة | آمن | غير آمن |
| الحفاظ على السجل الكامل | نعم | قد لا يكون |
| الاستخدام | للتراجع عن تعهدات تم دمجها أو على فروع مشتركة | لتعديل سجل التعهدات المحلي |


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


* [[التحليل الفني]]
* [[استراتيجية مارتينجال]]: مثل محاولة التراجع عن سلسلة من الـ commits غير الناجحة.
* [[التحليل الأساسي]]
* [[استراتيجية المضاعفة]]: مثل تكرار عملية revert لحل مشكلة مستمرة.
* [[مؤشر القوة النسبية (RSI)]]
* [[تحليل الاتجاه]]: مثل تحديد الـ commits التي تسببت في اتجاه سلبي في المشروع.
* [[المتوسطات المتحركة]]
* [[مؤشر المتوسط المتحرك]]: مثل تتبع التغييرات في المشروع بمرور الوقت.
* [[بولينجر باندز]]
* [[مؤشر القوة النسبية (RSI)]]: مثل تقييم "صحة" الـ commits بناءً على تأثيرها على المشروع.
* [[مستويات فيبوناتشي]]
* [[تحليل فيبوناتشي]]: تحديد نقاط الـ revert المحتملة بناءً على أنماط تاريخية.
* [[أنماط الشموع اليابانية]]
* [[شجرة الكاندلستيك]]: تحليل تاريخ الـ commits لتحديد الأنماط.
* [[إدارة المخاطر]]
* [[خطوط الدعم والمقاومة]]: تحديد الـ commits التي تمثل نقاط تحول رئيسية في المشروع.
* [[التداول اليومي]]
* [[تحليل حجم التداول]]:  تقييم أهمية الـ commits بناءً على عدد المطورين الذين شاركوا فيها.
* [[التداول المتأرجح]]
* [[مؤشر MACD]]: تحديد الـ commits التي تمثل تغييرات كبيرة في اتجاه المشروع.
* [[التداول طويل الأجل]]
* [[مؤشر ستوكاستيك]]: تقييم مدى "تشبع" المشروع بالتغييرات وتحديد الحاجة إلى revert.
* [[تنويع المحفظة]]
* [[التحليل الأساسي]]: تقييم تأثير الـ commits على الأهداف العامة للمشروع.
* [[استراتيجية الاختراق]]
* [[التحليل الفني للوقت والسعر]]:  تحديد الوقت الأمثل لإجراء الـ revert.
* [[استراتيجية الارتداد]]
* [[استراتيجية الاختناق]]:  إجراء revert سريع لحل مشكلة حرجة.
* [[استراتيجية التداول بناءً على الأخبار]]
* [[استراتيجية الارتداد]]:  التراجع عن التغييرات عندما يشير التحليل إلى اتجاه سلبي.


== روابط مفيدة ==
== موارد إضافية ==


* [[Git Documentation]]: الوثائق الرسمية لـ Git.
* [[Git Documentation]]: الوثائق الرسمية لـ Git.
* [[Pro Git Book]]: كتاب شامل حول Git.
* [[Git Cheat Sheet]]: ورقة غش سريعة لـ Git.
* [[GitHub Learning Lab]]: دروس تفاعلية حول Git و GitHub.
* [[GitHub Learning Lab]]: دروس تفاعلية حول Git و GitHub.
* [[Stack Overflow Git Tag]]: أسئلة وأجوبة حول Git على Stack Overflow.
* [[Atlassian Git Tutorial]]: دليل شامل لـ Git من Atlassian.
* [[Git Branching Model]]: نموذج تفرع Git.
* [[Pro Git Book]]: كتاب مجاني عبر الإنترنت حول Git.
* [[Gitflow Workflow]]: سير عمل Gitflow.
* [[Stack Overflow - Git Revert]]: أسئلة وأجوبة حول Git revert على Stack Overflow.
* [[GitHub Flow]]: سير عمل GitHub Flow.
* [[Git Branching]]: فهم الفروع في Git.
* [[Continuous Integration]]: التكامل المستمر.
* [[Git Merge]]: فهم الدمج في Git.
* [[Continuous Delivery]]: التسليم المستمر.
* [[Git Commit]]: فهم الـ commits في Git.
* [[DevOps]]: تطوير العمليات.
* [[Git Status]]: فهم حالة مستودع Git.
* [[Version Control System]]: نظام التحكم في الإصدار.
* [[Git Log]]: عرض تاريخ الـ commits.
* [[Distributed Version Control System]]: نظام التحكم في الإصدار الموزع.
* [[Git Diff]]: مقارنة التغييرات بين الـ commits.
* [[Merge Request]]: طلب الدمج.
* [[Git Stash]]: حفظ التغييرات غير الملتزم بها.
* [[Pull Request]]: طلب السحب.
* [[Git Ignore]]: استبعاد الملفات من التتبع.
* [[Git Pull]]: جلب التغييرات من مستودع بعيد.
* [[Git Push]]: دفع التغييرات إلى مستودع بعيد.
* [[Git Clone]]: نسخ مستودع Git.


== الخلاصة ==
=== خاتمة ===


`git revert` هو أداة قوية للتراجع عن التغييرات في Git. إنه آمن للاستخدام على الفروع المشتركة ويحافظ على سجل كامل للتغييرات. من خلال فهم كيفية استخدام `git revert` بشكل صحيح، يمكنك إدارة سجل التعهدات الخاص بمشروعك بكفاءة وفعالية. تذكر دائماً تقييم الموقف قبل اختيار `git revert` أو `git reset`، مع الأخذ في الاعتبار تأثير كل أمر على سجل التعهدات وتعاون الفريق.
Git revert هي أداة أساسية لأي مطور يستخدم Git. إن فهم كيفية استخدامها ومتى تستخدمها يمكن أن يساعدك في الحفاظ على تاريخ مشروعك نظيفًا وقابلاً للتتبع، وتجنب فقدان البيانات، والتعاون بفعالية مع مطورين آخرين. تذكر دائمًا أن الـ revert هو أفضل خيار عندما تحتاج إلى التراجع عن تغييرات على فرع مشترك.


[[Category:الفئة:أنظمة_التحكم_في_الإصدار]]
[[Category:الفئة:أنظمة_التحكم_في_الإصدار]]

Latest revision as of 02:03, 24 April 2025

Git Revert: دليل شامل للمبتدئين

Git revert هي عملية قوية في نظام التحكم في الإصدار Git تسمح لك بالتراجع عن تغييرات معينة تم إدخالها في تاريخ مشروعك، دون الحاجة إلى إعادة كتابة التاريخ (كما هو الحال مع Git reset). هذا يجعلها أداة آمنة وموصى بها بشكل خاص للعمل على الفروع المشتركة مع مطورين آخرين. في هذا المقال، سنشرح مفهوم الـ revert بالتفصيل، وكيفية استخدامه، ومتى يجب عليك استخدامه بدلاً من أدوات أخرى مثل reset.

ما هو Git Revert؟

تخيل أنك قمت بدمج تغييرات من فرع آخر في مشروعك، واكتشفت لاحقًا أن هذه التغييرات تسببت في حدوث خطأ أو خلل. بدلاً من محاولة تحديد التغييرات السيئة وإزالتها يدويًا، يمكنك استخدام `git revert` لإنشاء commit جديد يلغي التغييرات التي أدخلها commit معين.

الـ revert لا يحذف الـ commit الأصلي. بل يقوم ببناء commit جديد يعكس (يلغي) التغييرات التي تم إجراؤها في الـ commit المستهدف. هذا يحافظ على تاريخ مشروعك كاملاً وقابلاً للتتبع، وهو أمر بالغ الأهمية للتعاون والتدقيق.

الفرق بين Git Revert و Git Reset

هناك فرق جوهري بين `git revert` و `git reset`:

  • Git Revert: ينشئ commit جديدًا يعكس التغييرات. التاريخ يبقى كما هو، مع إضافة commit جديد يعكس التغييرات. آمن للعمل على الفروع المشتركة.
  • Git Reset: يعيد الفرع الحالي إلى commit معين. يمكن أن يؤدي إلى فقدان البيانات إذا لم يتم التعامل معه بحذر، خاصة على الفروع المشتركة.

| الميزة | Git Revert | Git Reset | |---|---|---| | **التاريخ** | يحافظ على التاريخ كاملاً | يمكن أن يعيد كتابة التاريخ | | **الفروع المشتركة** | آمن للاستخدام | خطير للاستخدام | | **فقدان البيانات** | لا يوجد | ممكن | | **التعقيد** | بسيط نسبيًا | أكثر تعقيدًا |

لمزيد من المعلومات حول Git Reset و Git Reflog، راجع المقالات المخصصة لهما.

كيفية استخدام Git Revert

أبسط طريقة لاستخدام `git revert` هي تحديد الـ commit hash الذي تريد التراجع عنه:

```bash git revert <commit-hash> ```

سيفتح هذا محرر النصوص الخاص بك مع رسالة commit افتراضية. يمكنك تعديل هذه الرسالة أو استخدامها كما هي. بعد حفظ الرسالة وإغلاق المحرر، سيتم إنشاء commit جديد يعكس التغييرات التي تم إجراؤها في الـ commit المحدد.

مثال:

```bash git revert a1b2c3d4e5f67890abcdef1234567890 ```

إذا كنت تريد التراجع عن عدة commits متتالية، يمكنك تحديد نطاق من commits:

```bash git revert <commit-hash1>..<commit-hash2> ```

سيؤدي هذا إلى التراجع عن جميع الـ commits بين `commit-hash1` و `commit-hash2` (بما في ذلك `commit-hash1`، ولكن ليس `commit-hash2`).

التعامل مع التعارضات

في بعض الأحيان، قد يؤدي الـ revert إلى حدوث تعارضات (conflicts) إذا كانت هناك تغييرات أخرى قد تم إجراؤها على نفس الأسطر من التعليمات البرمجية. في هذه الحالة، سيتوقف Git ويطلب منك حل التعارضات يدويًا.

لحسن الحظ، يمكن حل التعارضات بنفس الطريقة التي يتم بها حلها عند الدمج (merge). بعد حل التعارضات، استخدم `git add` لإضافة الملفات المعدلة، ثم `git revert --continue` لإكمال عملية الـ revert. إذا قررت التوقف عن الـ revert، يمكنك استخدام `git revert --abort`.

متى تستخدم Git Revert؟

  • التراجع عن الأخطاء: عندما تكتشف خطأً تم إدخاله في commit معين.
  • إلغاء الميزات: عندما تحتاج إلى إزالة ميزة تم إضافتها في commit معين.
  • التعاون: عندما تعمل على فرع مشترك مع مطورين آخرين وتريد التراجع عن تغييرات دون التأثير على عملهم.
  • الحفاظ على التاريخ: عندما تريد الحفاظ على تاريخ مشروعك كاملاً وقابلاً للتتبع.

استراتيجيات تداول الخيارات الثنائية والتحليل الفني

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

موارد إضافية

خاتمة

Git revert هي أداة أساسية لأي مطور يستخدم Git. إن فهم كيفية استخدامها ومتى تستخدمها يمكن أن يساعدك في الحفاظ على تاريخ مشروعك نظيفًا وقابلاً للتتبع، وتجنب فقدان البيانات، والتعاون بفعالية مع مطورين آخرين. تذكر دائمًا أن الـ revert هو أفضل خيار عندما تحتاج إلى التراجع عن تغييرات على فرع مشترك.

ابدأ التداول الآن

سجل في IQ Option (الحد الأدنى للإيداع $10) افتح حساباً في Pocket Option (الحد الأدنى للإيداع $5)

انضم إلى مجتمعنا

اشترك في قناة Telegram الخاصة بنا @strategybin للحصول على: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات باتجاهات السوق ✓ مواد تعليمية للمبتدئين

Баннер