التراجع عن بوابة سحب, كيفية جلب اتفاقيات إعادة الشراء إلى الدولة القديمة

StackOverflow https://stackoverflow.com/questions/1223354

  •  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 المذكورة في كل إجابة أخرى يتطلب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top