يقول git cherry-pick "… 38c74d هو دمج ولكن لم يتم منح الخيار -m"


Answers

@ رد Borealid هو الصحيح ، ولكن لنفترض أنك لا تهتم بالحفاظ على تاريخ دمج الدقيق للفرع فقط وتريد فقط اختيار نسخة منه خطية. إليك طريقة سهلة وآمنة للقيام بذلك:

حالة البداية: أنت في الفرع X ، وتريد أن تختار الكرز Y..Z .

  1. git checkout -b tempZ Z
  2. git rebase Y
  3. git checkout -b newX X
  4. git cherry-pick Y..tempZ

ما يفعله هذا هو إنشاء فرع tempZ على أساس Z ، ولكن مع التاريخ من Y فصاعدا خطي ، ومن ثم اختيار الكرز على نسخة من X تدعى newX . (من الأسلم القيام بذلك على فرع جديد بدلاً من تحور X ). بالطبع قد يكون هناك صراعات في الخطوة 4 ، والتي سيكون عليك حلها بالطريقة المعتادة (يعمل cherry-pick كثيرًا مثل rebase في هذا الصدد ).

إذا أعطت الخطوة 2 الرسالة "تم تحديث tempZ الفرع الحالي" ، ثم Y..Z كانت خطية بالفعل ، لذلك مجرد تجاهل هذه الرسالة والمضي قدما في الخطوات 3 و 4.

ثم مراجعة newX ومعرفة ما إذا كان ذلك ما أردت.

(ملاحظة: هذا ليس مثل git rebase X البسيط عندما تكون في الفرع Z ، لأنه لا يعتمد بأي شكل على العلاقة بين X و Y ؛ قد يكون هناك التزام بين السلف المشترك و Y الذي لم تفعله. ر تريد.)

Question

لقد أجريت بعض التغييرات في فرعي الرئيسي وأرغب في إحضار تلك المنبع. عندما أختار الكرز بين الإلتزامات التالية لكنني متورط في fd9f578 حيث يقول git:

$ git cherry-pick fd9f578
fatal: Commit fd9f57850f6b94b7906e5bbe51a0d75bf638c74d is a merge but no -m option was given.

ما هو git يحاول أن يخبرني وهو الكرز اختيار الشيء الصحيح لاستخدامه هنا؟ يتضمن الفرع الرئيسي تغييرات على الملفات التي تم تعديلها في فرع المنبع ، لذلك أنا متأكد من أنه سيكون هناك بعض التعارضات دمج ولكن تلك ليست سيئة للغاية لتصويب. أنا أعرف أي تغييرات مطلوبة أين.

هذه هي الإلتزامات التي أرغب في جلبها إلى الأعلى.

e7d4cff added some comments...
23e6d2a moved static strings...
44cc65a incorporated test ...
40b83d5 whoops delete whitspace...
24f8a50 implemented global.c...
43651c3 cleaned up ...
068b2fe cleaned up version.c ...
fd9f578 Merge branch 'master' of ssh://extgit/git/sessions_common
4172caa cleaned up comments in sessions.c ...