ما هي أفضل طريقة لتغيير شجرة العمل إلى التزام معين قبل الشرعة؟
-
21-09-2019 - |
سؤال
سير العمل المعتاد عند بدء ملف git bisect
الجلسة هي:
git bisect start # start a bisect session
git bisect bad # I noticed that the current state is broken
الآن ، غالبًا ما أعلم أن الأمور نجحت في الماضي ، لكنني لا أعرف بعد أي الإصدار كان جيدًا ، لذلك أرغب عادةً أستطيع أن أميز مع git bisect good
.
ما هي أفضل طريقة للقيام بخطوة "إعادة شجرة العمل إلى حالة قديمة"؟ git reset --hard <some_good_rev>
? git checkout <some_good_rev>
؟ شيء آخر؟ يرجى تبرير إجابتك.
المحلول
عادة لا أعرف أين هو القس الجيد ، لذلك يجب أن أجدها. خمن إلى أي مدى قد تكون جيدة. دعنا نقول ، 32 درس. بدءًا من طرف الفرع ، ومع الدلائل العاملة النظيفة:
$ git checkout HEAD~32
قم بإجراء الاختبار. إذا كان ذلك بمثابة قس جيد ، فابدأ في الشرعة. إذا لم يكن الأمر كذلك ، فابتعد عن المزيد:
$ git checkout HEAD~32
شطف ، رغوة ، كرر.
لماذا "Git Checkout؟" نظرًا لأن "إعادة تعيين GIT" ستتغير التي تلتزم الفرع بأنها "نصيحة" ، لكن Git Checkout لن يفعل ذلك.
نصائح أخرى
إذا كنت لا تعرف على وجه اليقين أي إصدار حيث عملت الوظيفة (الالتزام الذي قدم الوظيفة؟) ، يبدو أنك تفقد الكثير (كل شيء؟) لصالح Bisect. إذا كنت تعلم أنه كان هناك ملزمة واحدة على الأقل حيث تعمل الوظيفة ، حتى لو لم يكن بالضرورة أحدث الالتزام حيث تعمل الوظيفة ، فقط قم بالعلامة على أنها جيدة. خلاف ذلك ، فأنت تقوم بشكل أساسي بتقسيم نفسك.