2011-03-29 11 views
9

मेरे पास कई उपयोगकर्ताओं से 'प्रतिबद्ध' है। मैं कुछ उपयोगकर्ता के सभी कामों को एक नई शाखा में ले जाना चाहता हूं।सभी विशिष्ट उपयोगकर्ता से नई शाखा में कैसे चलते हैं?

मैं यह कैसे कर सकता हूं?

उत्तर

14

एक लेखक द्वारा सभी प्रतिबद्ध का पता लगाएं और एक फाइल करने के लिए उनके हैश को बचाने:

git log --author=<author> --format=%H > /tmp/commit-by-x 

एक नई शाखा है कि शामिल नहीं है की इस विशेष लेखक प्रतिबद्ध के बाद आप उन्हें दो बार लागू करने के लिए नहीं करना चाहते बनाएँ। इस के लिए, आप एक नया खाली शाखा बना सकते हैं:

git checkout --orphan commits-by-x 

(सबसे पुराने से नवीनतम करने के लिए) है कि लेखक के सभी करता चेरी-लेने:

tac /tmp/commit-by-x | while read sha; do git cherry-pick ${sha}; done 

जाहिर है, अगर आप इस परिवर्तन सफल होना चाहते हैं लेखक-एक्स द्वारा पेश किया जाना बहुत ही स्थानीयकृत होना चाहिए।

+0

ग्रेट सॉल्यूशन! --ऑर्फन का उपयोग करने के बजाय, मुझे उस चरण में गिट चेकआउट -b <नई शाखा नाम> का उपयोग करके और अधिक सफलता मिली, और मैंने tmp फ़ाइल को संशोधित किया ताकि इसमें केवल हाल ही में दर्जन या विशिष्ट लेखक द्वारा काम किया जा सके। जैसा कि बताया गया है, लेखक की प्रतिबद्धता कई शाखाओं में फैली हुई है, तो यह आसानी से काम नहीं करेगा, इसलिए आपको पहले कमांड द्वारा उत्पन्न होने के बाद tmp फ़ाइल से केवल कुछ निश्चित हैंश चुनने की आवश्यकता हो सकती है। – emery

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