2010-06-17 13 views
18

क्या कोई निर्दिष्ट प्रतिबद्धता से पहले सभी प्रतिबद्धताओं को निकालने का कोई तरीका है और प्रारंभिक के रूप में कार्य करने का कोई तरीका है?विशिष्ट प्रतिबद्धता से पहले प्रतिबद्धता हटाएं

+0

मुझे पता है कि मैंने ऐसा कुछ करने के लिए कहीं एक ट्यूटोरियल देखा है ... यह दिखाता है कि आप एक्स को एक्स पर एक ऐतिहासिक रेपो कैसे समाप्त कर सकते हैं, और फिर एक्स को हेड तक ले जाएं और उनसे एक नया रेपो बनाएं, ऐतिहासिक रेपो तक पहुंचने के तरीके के बारे में एक्स पर एक टिप्पणी के साथ। मुझे अभी यह नहीं मिल रहा है, लेकिन यह संभव है। – Daenyth

उत्तर

16

चलो कहते हैं कि नया सबसे पुराना प्रतिबद्ध के हैश एक्स है और हम "oldroot" और "newroot" अस्थायी रूप से उपयोग कर सकते हैं करते हैं:

git checkout -b oldroot X 
TREE=`git write-tree` 
COMMIT=`echo "Killed history" | git commit-tree "$TREE"` 
git checkout -b newroot "$COMMIT" 
git rebase --onto newroot oldroot master 
# repeat for other branches than master that should use the new initial commit 
git checkout master 
git branch -D oldroot 
git branch -D newroot 
git gC# WARNING: if everything's done right, this will actually delete your history from the repo! 

यह एक 'newroot' 'oldroot' के रूप में एक ही सामग्री के साथ प्रतिबद्ध पैदा करेगा प्रतिबद्ध, लेकिन किसी भी माता पिता के बिना। फिर, यह सभी अन्य शाखाओं को नई जड़ पर पुनर्जीवित करता है, जो उन सभी के इतिहास में होना चाहिए।

संपादित करें: परीक्षण और तय; थोड़ा बाद में, एक सा

+2

ध्यान दें कि प्रारंभिक प्रतिबद्धता के लिए "हत्या इतिहास" नया प्रतिबद्ध संदेश बन गया है। यदि आप कुछ और चाहते हैं, उदाहरण के लिए मूल संदेश की तरह, बस इसे वहां पाइप करें। –

0

अधिक आसान समाधान होगा परिष्कृत, मूल रूप से विचार करें अपनी शाखा प्रतिबद्ध मुख्य है और आप एक पहले प्रतिबद्ध था, अब आप भी एक पहले की चोटी पर प्रतिबद्ध था दूसरा

main->first->second 

अब आप बल्कि पहले की चोटी पर से मुख्य के शीर्ष पर दूसरा करना चाहते हैं: तो आप की तरह कुछ है। की तरह कुछ:

main->second->first or main->second 

आप बस कर सकते हैं,

git rebase -i main 

यह आपको एक इंटरैक्टिव खोल जहां प्रतिबद्ध के क्रम को पुनर्व्यवस्थित किए जाने या निकाले अपनी पसंद के लिए प्रतिबद्ध कर सकते हैं दे देंगे।

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