संपादित करें:
दस्तावेजों नीचे मेरा जवाब मर्ज के लिए एक रास्ता master
में aq
है, जहां अगर आप मर्ज उस पर किए गए परिवर्तनों को सूचीबद्ध करता है का विवरण देखने के aq
मर्ज करने से पहले, नहीं परिवर्तन पर किए गए master
। मैंने महसूस किया है कि शायद वह नहीं है जो आप चाहते हैं, भले ही आपको लगता है कि यह है!
बस:
git checkout aq
git merge master
ठीक है।
हां, यह सरल मर्ज दिखाएगा कि उस बिंदु से परिवर्तन master
किए गए थे aq
, दूसरे तरीके से नहीं; लेकिन यह ठीक है - क्योंकि वही हुआ है! बाद में, जब आप अंत में अपनी शाखा को मर्ज करते हैं master
, तो वह यह है कि एक मर्ज आखिरकार आपके सभी परिवर्तनों को दिखाएगा master
(जैसा कि आप चाहते हैं, और यही वह जगह है जहां लोग वैसे भी उस जानकारी को खोजने की उम्मीद करने जा रहे हैं)।
मैं जाँच की और गए भी पता चलता है बिल्कुल वैसा ही परिवर्तन (सभी पर किए गए परिवर्तनों को नीचे दृष्टिकोण aq
के बाद से मूल के बीच विभाजन aq
और master
) के ऊपर सामान्य दृष्टिकोण, जब आप अंततः मर्ज सब कुछ वापस करने के लिए के रूप में master
। इसलिए मुझे लगता है कि इसका एकमात्र वास्तविक नुकसान (अति-जटिल और गैर-मानक होने के अलावा ...: - /) यह है कि यदि आप एन हाल के परिवर्तनों को वापस हवा देते हैं git reset --hard HEAD~<n>
और यह मर्ज पिछले हो जाता है, तो नीचे दिए गए संस्करण वापस नीचे रोल करते हैं 'गलत' शाखा, जिसे आपको हाथ से ठीक करना होगा (जैसे git reflog
& के साथ git reset --hard [sha]
)।
[तो, मैंने जो पहले सोचा था कि:]
इसके साथ एक समस्या है:
git checkout aq
git merge master
क्योंकि मर्ज कमेटी में दिखाए गए परिवर्तन (जैसे कि यदि आप अभी या बाद में गितुब, बिटकबेट या आपके पसंदीदा स्थानीय गिट हिस्ट्री व्यूअर में देखें) मास्टर पर किए गए बदलाव हैं, जो शायद आप नहीं चाहते हैं।
दूसरी ओर
git checkout master
git merge aq
शो aq में की गई है, जो शायद परिवर्तन है कि आप क्या चाहते। (या, कम से कम, यह अक्सर वही होता है जो मैं चाहता हूं!) लेकिन सही बदलाव दिखाने वाला मर्ज गलत शाखा पर है!
सामना कैसे करें?!
पूर्ण प्रक्रिया, ऐज पर किए गए परिवर्तनों को दिखाते हुए एक मर्ज कमिट के साथ समाप्त होती है (जैसा कि ऊपर दूसरे मर्ज के अनुसार), लेकिन मर्ज के साथ ऑक ब्रांच को प्रभावित करने वाला है:
git checkout master
git merge aq
git checkout aq
git merge master
git checkout master
git reset --hard HEAD~1
git checkout aq
यह: मास्टर पर aq को मर्ज करता है, फास्ट-फॉरवर्ड कि aq में एक ही मर्ज करता है, इसे मास्टर पर undoes करता है, और आपको फिर से aq पर वापस रखता है!
मुझे ऐसा लगता है कि मुझे कुछ याद आ रहा है - ऐसा लगता है कि आप स्पष्ट रूप से चाहते हैं, और ऐसा कुछ करना मुश्किल है।
इसके अलावा, रिबास समकक्ष नहीं है। यह aq पर किए गए कमिट्स की टाइमस्टैम्प और पहचान खो देता है, जो कि मैं चाहता भी नहीं हूं।