التراجع عن بوابة سحب, كيفية جلب اتفاقيات إعادة الشراء إلى الدولة القديمة
-
11-07-2019 - |
سؤال
هل هناك أي طريقة للعودة أو التراجع عن بوابة سحب بحيث بلدي المصدر/repos سوف تأتي إلى الدولة القديمة التي كانت قبل القيام بوابة سحب ؟ أريد أن أفعل هذا لأنه دمج بعض الملفات التي لم أكن أريد أن تفعل ذلك, ولكن فقط دمج غيرها من الملفات المتبقية.لذا أريد الحصول على تلك الملفات مرة أخرى, هل هذا ممكن ؟ شكرا :)
تحرير أريد أن التراجع عن دمج بوابة للتوضيح.بعد رؤية بعض الإجابات ، أنا فعلت هذا
git reflog
bb3139b... HEAD@{0}: pull : Fast forward
01b34fa... HEAD@{1}: clone: from ...name...
الآن ماذا يجب أن أفعل ؟ القيام git reset --hard
هو بخير ؟ لا تريد أن المسمار مرة أخرى ، لذلك طلب مفصلة الخطوات ؟
المحلول
وgit pull
سوف تفعل شيئين: أنه يقوم git fetch
ثم git merge
حيث يدمج الفروع التي تم الإعداد المراد دمجها في التكوين الخاص بك
وهكذا ما تريد القيام به هو التراجع عن دمج (التراجع عن جلب لا يجعل الكثير من معانيها، وينبغي ألا يكون من الضروري).
لذلك عليك أن تجرب استخدام git reset --hard
لإعادة إلى حالة سابقة. استخدم بوابة-reflog قيادة للعثور على SHA-1 من الحالة السابقة ثم إعادة تعيين إليها.
على تحذير : لgit reset --hard
إزالة كافة التغييرات غير ملتزم بها.
نصائح أخرى
ونفس الجواب JKP، ولكن هنا الأمر الكامل:
git reset --hard a0d3fe6
وحيث تم العثور على a0d3fe6 عن طريق القيام
git reflog
ووالنظر إلى النقطة التي تريد التراجع عن ذلك.
وهناك طريقة أكثر حداثة إلى التراجع عن الدمج:
git merge --abort
و قليلا من كبار السن الطريقة:
git reset --merge
المدرسة القديمة الطريقة الموضحة في الإجابات السابقة (تحذير:وتجاهل كل التغييرات المحلية):
git reset --hard
ولكن في الواقع, فمن الجدير بالملاحظة أن git merge --abort
هو فقط ما يعادل git reset --merge
بالنظر إلى أن MERGE_HEAD
هو الحاضر.وهذا يمكن أن تقرأ في بوابة تساعد على دمج الأوامر.
git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.
بعد فشل دمج عندما لا يوجد MERGE_HEAD
, فإن فشل في دمج يمكن التراجع مع git reset --merge
ولكن ليس بالضرورة مع git merge --abort
, لذا فهي ليست فقط القديمة والجديدة الجملة من أجل نفس الشيء.هذا هو السبب في أنني أجد git reset --merge
أن تكون أكثر فائدة في العمل اليومي.
ويعمل
أول استخدام: git reflog
وتجد SHA بك من دولة previus الخاصة بك وجعل (رئيس @ {1} مثال)
git reset --hard HEAD@{1}
إذا كنت قد gitk (حاول تشغيل "gitk --all من سطر الأوامر بوابة بك")، انها بسيطة. فقط تشغيله، حدد ارتكاب تريد التراجع إلى (بزر الماوس الأيمن)، واختر "إعادة تعيين فرع رئيسي إلى هنا". إذا كان لديك أي تغييرات uncommited، اختار الخيار "الصعب".
لنفترض $COMMIT
كانت آخر لارتكاب معرف قبل إجراء git pull
.ما تحتاج إلى التراجع عن آخر سحب
git reset --hard $COMMIT
.
مكافأة:
في الحديث عن سحب أود أن حصة مثيرة للاهتمام خدعة ،
git pull --rebase
هذا الأمر أعلاه هو الأكثر فائدة الأمر في بوابة الحياة التي أنقذت الكثير من الوقت.
قبل دفع حديثا تلتزم الخادم ، حاول هذا الأمر و مزامنة تلقائيا أحدث التغييرات الخادم (مع إحضار + دمج) وسوف مكان ارتكاب أعلى في بوابة الدخول.لا داعي للقلق حول دليل سحب/دمج.
تجد التفاصيل في: http://gitolite.com/git-pull--rebase
ويمكنك القيام به git reset --hard ORIG_HEAD
ولأن "سحب" أو "دمج" مجموعة ORIG_HEAD أن الوضع الحالي قبل القيام تلك الإجراءات.
وهذا هو أسهل طريقة للعودة لك سحب التغييرات.
git reset --hard 9573e3e0
وأين 9573e3e0
الخاص بك هو {الالتزام معرف}
إذا كان هناك دمج فشلت، والذي هو السبب الأكثر شيوعا لأنه يريد التراجع عن git pull
، تشغيل git reset --merge
يفعل بالضبط ما يتوقعه المرء: الحفاظ على الملفات المنال، ولكن التراجع عن الدمج الذي git pull
محاولة لدمج. ثم يمكن للمرء أن تقرر ما يجب القيام به من دون فوضى التي git merge
يولد في بعض الأحيان. وأنها لا تحتاج إلى واحد للعثور على ارتكاب بالضبط ID التي --hard
المذكورة في كل إجابة أخرى يتطلب.