git - गिट में एक विशेष प्रतिबद्धता को पूर्ववत करें जिसे रिमोट रिपोज़ पर धक्का दिया गया है




version-control git-reset (2)

क्योंकि इसे पहले से ही धक्का दिया गया है, आपको सीधे इतिहास में हेरफेर नहीं करना चाहिए। git revert एक नई प्रतिबद्धता का उपयोग करके प्रतिबद्धता से विशिष्ट परिवर्तनों को git revert देगा, ताकि प्रतिबद्ध इतिहास में हस्तक्षेप न किया जा सके।

किसी विशेष प्रतिबद्धता को पूर्ववत करने का सबसे आसान तरीका क्या है:

  • सिर या सिर में नहीं
  • रिमोट पर धकेल दिया गया है।

क्योंकि अगर यह नवीनतम प्रतिबद्धता नहीं है,

git reset HEAD

काम नहीं करता और क्योंकि इसे रिमोट पर धकेल दिया गया है,

git rebase -i

तथा

git rebase --onto

रिमोट्स में कुछ समस्या पैदा होगी।

और भी, मैं वास्तव में इतिहास को संशोधित नहीं करना चाहता हूं। यदि कोई बुरा कोड था, तो यह इतिहास में था और देखा जा सकता है। मैं इसे काम करने की प्रतिलिपि में बस चाहता हूं, और मुझे एक रिवर्स मर्ज प्रतिबद्धता नहीं है।

दूसरे शब्दों में, निम्नलिखित svn कमांड के Git समतुल्य क्या है:

svn merge -r 303:295 http://svn.example.com/repos/calc/trunk

जो एक नई प्रतिबद्धता के रूप में उन संशोधनों में सभी परिवर्तनों को विलय करने के विपरीत 2 9 5 से 302 तक सभी परिवर्तनों को हटा देता है।

svn merge -c -302 ^/trunk

जो 302 प्रतिबद्धता को अनदेखा करता है, निश्चित रूप से एक और प्रतिबद्धता जोड़कर कि रिवर्स उस संबंधित प्रतिबद्धता में परिवर्तन विलय करता है।

मैंने सोचा कि यह गिट में काफी सरल संचालन होना चाहिए और काफी आम उपयोग केस होना चाहिए। परमाणु काम का मुद्दा क्या है?

हमारे पास स्टेजिंग स्टेजिंग है और यह सुनिश्चित करने के लिए कि काम पूरी तरह से परमाणु है, क्या आप उन परमाणुओं में से एक या अधिक आसानी से पूर्ववत नहीं कर पाएंगे?


मुझे ऑटो-प्रतिबद्ध पसंद नहीं है कि git revert करता है, इसलिए यह कुछ के लिए सहायक हो सकता है।

यदि आप बस संशोधित फ़ाइलों को ऑटो-प्रतिबद्ध नहीं चाहते हैं , तो आप --no-commit उपयोग कर सकते हैं

% git revert --no-commit <commit hash>

जो -n के समान है

% git revert -n <commit hash>





git-revert