2012-07-19 4 views
7

मैंने बीटा शाखा को मास्टर शाखा में विलय कर दिया। मैं उत्पत्ति के लिए धक्का दिया। अब मैं मास्टर बनना चाहता हूं क्योंकि यह स्थानीय और दूरस्थ दोनों में विलय से पहले था।गिट-रिवर्ट का उपयोग करके धक्का देने वाले विलय को पूर्ववत करने के लिए कौन सा प्रतिबद्ध हैश?

undoing a merge that was already pushed के लिए एक अच्छा जवाब पता चलता है

git revert -m 1 commit_hash 

, अगर यह वास्तव में जाने का रास्ता है कि कैसे मैं commit_hash निर्धारित कर सकते हैं? मैं असफल हैश merge-base द्वारा वापस करने की कोशिश की:

$ git merge-base --all master beta 
1f4b949b7ef97abf913ae672e3acd0907abfac1b 
$ git revert -m 1 1f4b949b7ef97abf913ae672e3acd0907abfac1b 
error: Mainline was specified but commit 1f4b949b7ef97abf913ae672e3acd0907abfac1b is not a merge. 
fatal: revert failed 

मैं शाखाओं के दोनों Git-लॉग और gitk renditions की जांच की है, लेकिन वे बहुत लंबे समय कर रहे हैं, और मैं काफी अनिश्चित हूँ मेरी व्याख्या की महसूस करने के लिए मैं ऐसा करना चाहिए शायद एक बड़ी गड़बड़ बनाने से पहले सहायता लेना। बीटा वी 2 से लिया गया था जो मास्टर से लिया गया था। गुरु से v2 और बीटा में मास्टर से कुछ विलय हुए हैं क्योंकि मैंने नई शाखाओं को मास्टर के साथ अद्यतित रखा है। बीटा से मास्टर में दिशा में विलय एक गलती थी जिसे मैं सही करना चाहता हूं।

एक बार जब मैं विलय बिंदु निर्धारित करता हूं, तो मुझे विलय के बाद मास्टर पर किए गए किसी भी काम को वास्तव में बीटा शाखा में होना चाहिए, तो उन्हें स्थानांतरित करने का सबसे अच्छा तरीका क्या है?

+2

'लॉग --all --graph --pretty = tformat:'% Cred% h% Creset -% C (पीला)% d% क्रसेट% s% Cgreen (% an% cr)% Creset '- abbrev-commit --date = सापेक्ष' (मैं व्यक्तिगत रूप से इसे उपनाम करता हूं), यह सभी शाखाओं और उनकी तिथि के काम प्रदर्शित करेगा, और विलय होने पर भी। –

उत्तर

4

आपको विलय की प्रतिबद्धता को खोजने की आवश्यकता है, git merge-base आपको वह वचन बताता है जहां आप विलय कर सकते हैं। यह मूल रूप से आखिरी प्रतिबद्धता है जो उन दो शाखाओं में मौजूद है। मर्ज प्रतिबद्धता केवल आपकी मास्टर शाखा में मौजूद है, जब तक कि आप विलय के बाद कोई नई शाखा नहीं बनाते, लेकिन यह यहां प्रासंगिक नहीं है। :)

मर्ज कोशिश करने ढूंढने के लिए: git log master ^beta --ancestry-path --merges

जरूरत प्रतिबद्ध आखिरी प्रतिबद्ध है।

लेकिन कृपया लीनुस पर 'पढ़ लिख: http://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.txt

1

इसके अलावा http://sethrobertson.github.com/GitFixUm/ जो धक्का दिया मर्ज के सहित किसी भी Git समस्या, से अवगत को देखो। हालांकि ... धक्का दिया विलय का कोई आसान समाधान नहीं है।

संबंधित मुद्दे