एक विशेष प्रतिबद्ध को पूर्ववत करने का सबसे सरल तरीका क्या है:
- सिर या सिर में नहीं
- दूर तक धकेल दिया गया है।
क्योंकि अगर यह नवीनतम प्रतिबद्धता नहीं है,
git reset HEAD
काम नहीं करता है। और क्योंकि यह एक दूरदराज के लिए धकेल दिया गया है,
git rebase -i
तथा
git rebase --onto
रीमोट में कुछ समस्या पैदा करेगा।
इसलिए, मैं वास्तव में इतिहास को संशोधित नहीं करना चाहता। यदि बुरा कोड था, तो यह इतिहास में था और इसे देखा जा सकता है। मैं इसे वर्किंग कॉपी में रखना चाहता हूं, और मुझे रिवर्स मर्ज कमिट से ऐतराज नहीं है।
दूसरे शब्दों में, निम्नलिखित svn कमांड के बराबर Git क्या है :
svn merge -r 303:295 http://svn.example.com/repos/calc/trunk
जो कि उन बदलावों में सभी बदलावों को एक नई प्रतिबद्धता के रूप में बदलकर 295 से 302 तक के सभी परिवर्तनों को हटा देता है।
svn merge -c -302 ^/trunk
जो कि 302 प्रतिबद्ध को समाप्त करता है, निश्चित रूप से एक और प्रतिबद्ध जोड़कर कि रिवर्स उस संबंधित प्रतिबद्ध से परिवर्तनों को मिला देता है।
मैंने सोचा कि यह जीआईटी में एक काफी सरल ऑपरेशन और एक काफी सामान्य उपयोग मामला होना चाहिए। परमाणु प्रतिबद्धों के अलावा और क्या है?
हम मंचन किया है stashing और सभी यह सुनिश्चित करने के लिए प्रतिबद्ध पूरी तरह से परमाणु कर रहे हैं, आप एक या उन एटॉमिक कमिट की और अधिक आसानी से पूर्ववत करने के लिए सक्षम नहीं होना चाहिए?