कैसे करने के लिए चेरी लेने और विलय केवल एक subpath से एक सुविधा की शाखा में मास्टर करने के लिए

0

सवाल

मैं एक दिलचस्प समस्या (कम से कम मेरे लिए.)

मैं एक master शाखा और एक feature शाखा में किया गया है, जो जुदा अपनी तरह से master थोड़ी देर पहले. एक और टीम को अद्यतन रखता है master शाखा और मेरी टीम ही काम कर रहा है पर feature शाखा.

के master शाखा में कुछ बदलाव भी शामिल है कि मेरी टीम में कोई दिलचस्पी नहीं है. हम केवल उनके बारे में परवाह app फ़ोल्डर, कि यह है । यहां तक कि में app फ़ोल्डर के लिए, हम नहीं कर रहे हैं सब कुछ में रुचि रखते है, केवल परिवर्तन है कि हम लगता है कि हम की जरूरत है । हम नहीं कर रहे हैं विलय हमारे feature शाखा में उनके master वहाँ है, क्योंकि तकनीक के ढेर में परिवर्तन है कि हम लागू कर रहे हैं और हम केवल एक चीज की जरूरत है, उनमें से अपने जावास्क्रिप्ट कोड.

इस बीच, हम भी कर रहे हैं बनाने में परिवर्तन feature शाखा के app फ़ोल्डर. तो में app फ़ोल्डर, वे कुछ परिवर्तन है कि हम की जरूरत नहीं है, हम कुछ परिवर्तन है कि वे नहीं है. हम चाहते हैं रखने के लिए हमारे सभी परिवर्तन है, लेकिन केवल कुछ लेने के परिवर्तन.

मैं कैसे जा सकते हैं के विलय के बारे में उनकी master शाखा के app फ़ोल्डर में हमारे feature शाखा के app फ़ोल्डर? मैं शोध किया गया है घंटे के लिए, कुछ करने की कोशिश की बनाम कोड एक्सटेंशन का पूर्वावलोकन करने के लिए दोनों के बीच अंतर फ़ोल्डर्स. क्या मैं देख रहा हूँ के लिए एक इंटरफेस है, जहां मैं कर सकते हैं स्वीकार या अस्वीकार आता है कि सब कुछ से master शाखा के `अनुप्रयोग फ़ोल्डर । हालांकि यह मेरी पसंद है, मैं के लिए खुला रहा हूँ किसी भी सुझाव दिया है कि इस समस्या का समाधान होगा.

यह ध्वनि हो सकता है की तरह एक गड़बड़ है स्थिति लेकिन मेरी टीम के कुछ सदस्यों को खो दिया पिछले महीने के लिए और के बीच अंतर शाखाओं में वृद्धि हुई है बड़ा और बड़ा । अब हम चाहते हैं कि हल करने के लिए एक बार और सभी के लिए.

आपकी मदद के लिए धन्यवाद.

cherry-pick git merge
2021-11-24 00:41:33
2
1

क्या मैं देख रहा हूँ के लिए एक इंटरफेस है, जहां मैं स्वीकार कर सकते हैं या गिरावट आता है कि सब कुछ से मास्टर शाखा के app फ़ोल्डर

git checkout -p master app कच्चे तेल की है, लेकिन खड़ा के एक सभ्य मौका सेवारत यहाँ.

अगर नहीं है कि दिखाने के लिए पर्याप्त तुम फैसला आप क्या चाहते हैं, अगले कदम है एक चयनात्मक के साथ विलय

git diff --merge-base @ master -- app | git apply -3

का उपयोग करेगा जो Git के automerge मशीनरी और छोड़ किसी भी अतिव्यापी या abutting परिवर्तन के लिए आप सॉर्ट करने के लिए सामान्य रूप से बाहर, या आप कर सकते हैं बचाने के रचनाकार एक फाइल करने के लिए और इसे संपादित करने के लिए स्वाद के लिए इसे लागू करने से पहले अगर आप सावधान कर रहे हैं.

2021-11-24 06:42:34
1

वहाँ दो तरीके से ऐसा करने के लिए. सरल में से एक रखना होगा परिवर्तन, लेकिन त्यागें किसी भी प्रतिबद्ध वे बनाया है । अधिक जटिल एक की रक्षा करता है.

सिफारिश

दोनों के दो तरीकों से नीचे चर्चा पैदा करने की क्षमता है मर्ज संघर्ष और अन्य सिर दर्द रेखा के नीचे, विशेष रूप से लोगों के रूप में जारी रखने पर परिवर्तन करने के लिए मास्टर की एक शाखा है । इसके अलावा, यदि आप परिवर्तन करने के लिए एप्लिकेशन/ फ़ोल्डर में सुविधा शाखा, सीधे का उपयोग कर git लागू हो सकता है आपके परिवर्तन ओवरराइट किया जा रहा है.

मैं दृढ़ता से अनुशंसा होगा विलय मास्टर शाखा में सुविधा शाखा के माध्यम से git merge के साथ कोई squashing. दिया विचलन आप उल्लेख किया है, वहाँ हो सकता है मर्ज संघर्ष, लेकिन यह ठीक है । मर्ज संघर्ष करते हैं, क्या आप चाहते हैं: वे आप चुनते हैं जो करने के लिए परिवर्तन स्वीकार करते हैं, और जो अस्वीकार करने के लिए.

कहा जा रहा है, यहाँ कर रहे हैं, दो दृष्टिकोण है कि कर रहे हैं करने के लिए अनुरूप चेरी उठा केवल एक ही फ़ोल्डर ।

विकल्प 1: त्यागने प्रतिबद्ध रखने के लिए, परिवर्तन

यह दृष्टिकोण बहुत सीधे आगे है, और यह एक संयोजन का उपयोग करता git diff और git apply:

git switch feature
git diff feature..master -- app | git apply --index

यह करेंगे:

  • स्विच की सुविधा के लिए शाखा (यह है, जहां आप परिवर्तन लागू)
  • प्राप्त किए गए सभी परिवर्तन करने के लिए मास्टर शाखा, पर नहीं हैं कि सुविधा की एक शाखा है ।
  • फ़िल्टर केवल परिवर्तन में app निर्देशिका
  • आवेदन के माध्यम से परिवर्तन git apply
  • चरण परिवर्तन जोड़कर उन्हें सूचकांक करने के लिए (यह है क्या --index विकल्प)

के केवल नकारात्मक पक्ष यह दृष्टिकोण है कि यह नहीं होगा की रक्षा के इतिहास, या प्रतिबद्ध संदेश.

वहाँ से, आप कर सकते हैं कमिट परिवर्तन अपने आप को:

git commit -m "Apply changes made to master branch"

विकल्प 2: दोनों प्राप्त करता है और परिवर्तन

यह एक थोड़ा और अधिक जटिल है, और यह पर निर्भर करता है git format-patch.

git switch feature
git format-patch --stdout feature..master -- app | git am

यह करेंगे:

  • स्विच की सुविधा के लिए शाखा (जहां आप परिवर्तन लागू)
  • प्राप्त किए गए सभी परिवर्तन करने के लिए मास्टर शाखा, है कि नहीं कर रहे हैं, पर सुविधा के लिए शाखा
  • फिल्टर के द्वारा ही किए गए परिवर्तनों में app निर्देशिका
  • प्रारूप के रूप में इन की एक श्रृंखला पैच (युक्त प्रतिबद्ध संदेश, लेखक, आदि)
  • लागू इन पैच के सभी का उपयोग git हूँ

ध्यान दें कि सामग्री पर निर्भर करता है परिवर्तन की, यह परिणाम हो सकता है में एक विफलता है कि आप को हल करने के लिए मैन्युअल रूप से । (यह होगा आपको सचेत करने के लिए इस)

2021-11-24 21:55:27

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में