git - मैं गिटहब पर एक प्रतिबद्धता कैसे हटा सकता हूं?




github (14)

नोट: कृपया नीचे दी गई टिप्पणियों में git rebase -i विकल्प देखें-

git reset --soft HEAD^

सबसे पहले, अपने स्थानीय भंडार पर प्रतिबद्धता को हटा दें। आप इसे git rebase -i का उपयोग करके कर सकते हैं। उदाहरण के लिए, यदि यह आपकी आखिरी प्रतिबद्धता है, तो आप git rebase -i HEAD~2 कर सकते हैं और पॉप अप करने वाली संपादक विंडो में दूसरी पंक्ति को हटा सकते हैं।

फिर, git push origin +branchName का उपयोग करके git push origin +branchName

गिट जादू अध्याय 5 देखें : इतिहास के सबक - और फिर कुछ अधिक जानकारी के लिए (यानी यदि आप पुराने काम को हटाना चाहते हैं)।

ओह, और यदि आपका कामकाजी पेड़ गंदा है, तो आपको पहले git stash करना होगा, और उसके बाद एक git stash apply

मैंने "गलती से" गिटहब को एक प्रतिबद्धता को धक्का दिया।

क्या इस प्रतिबद्धता को हटाना संभव है?

मैं अपने गिटहब भंडार को वापस लेना चाहता हूं क्योंकि यह इस प्रतिबद्धता से पहले था।


यदि आप हटाने के बाद प्रतिबद्ध परिवर्तन रखना चाहते हैं:

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

1 - लॉग संदर्भ से वापस जाने के लिए इच्छित संदर्भ संदर्भ की प्रतिलिपि बनाएँ:

git log

2 - प्रतिबद्ध संदर्भ में गिट रीसेट करें:

 git reset <commit_ref>

3 - रिमोट पर धक्का देने के बाद बाद में उपयोग करने के लिए गलत प्रतिबद्धता से स्थानीय परिवर्तनों को स्टैश / स्टोर करें:

 git stash

4 - रिमोट रिपोजिटरी में परिवर्तन पुश करें, (-एफ या --force):

git push -f

5 - संग्रहीत परिवर्तनों को स्थानीय भंडार में वापस प्राप्त करें:

git stash apply

7 - यदि आपके पास परिवर्तनों में अनचाहे / नई फ़ाइलें हैं, तो आपको उन्हें करने से पहले गिट में जोड़ने की आवश्यकता है:

git add .

6 - जो भी अतिरिक्त परिवर्तन आपको चाहिए, उसके बाद आवश्यक फाइलें करें, (या स्थानीय फाइल में सभी फाइलों को करने के लिए, प्रत्येक फ़ाइल नाम को बताने के बजाय 'dot' का उपयोग करें:

git commit -m "<new_commit_message>" <file1> <file2> ...

या

git commit -m "<new_commit_message>" .

अपने टर्मिनल पर यह आदेश चलाएं।

git reset HEAD~n

आप स्थानीय रेपो जैसे हेड ~ 2 से अंतिम एन काम को हटा सकते हैं। अपने भंडार पर बल गिट पुश के साथ आगे बढ़ें।

git push -f origin <branch>

उम्मीद है की यह मदद करेगा!


अपने पुश को git revert लिए git revert प्रयोग करें।

गिट-रिवर्ट - कुछ मौजूदा कामों को वापस लाएं

git revert [--edit | --no-edit] [-n] [-m parent-number] [-s] <commit>...
git revert --continue
git revert --quit
git revert --abort

संबंधित पैच पेश किए गए परिवर्तनों को वापस लाएं, और उन्हें रिकॉर्ड करने वाले कुछ नए काम रिकॉर्ड करें। इसके लिए आपके काम करने वाले पेड़ को साफ करने की आवश्यकता है (हेड प्रतिबद्ध से कोई संशोधन नहीं)।


आपके द्वारा किए गए काम को ध्यान में रखते हुए सबसे हालिया प्रतिबद्धता हटाएं:

git reset --soft HEAD~1

आपके द्वारा किए गए काम को नष्ट करने, सबसे हालिया प्रतिबद्धता को हटाएं:

git reset --hard HEAD~1

आपको उस प्रतिबद्धता से अपने प्रतिबद्ध हैश को जानना होगा जिसे आप वापस करना चाहते हैं। आप इसे गिटहब यूआरएल से प्राप्त कर सकते हैं जैसे: https://github.com/your-organization/your-project/commits/master

आइए प्रतिबद्धता से हैश (जहां आप वापस जाना चाहते हैं) है "99fb454" (लंबा संस्करण "99fb45413eb9ca4b3063e07b40402b136a8cf264"), तो आपको बस इतना करना है:

git reset --hard 99fb45413eb9ca4b3063e07b40402b136a8cf264
git push --force

इसे पूरी तरह से पोंछने के लिए आपको अपने कैश को साफ़ करने की आवश्यकता होगी। गिट से यह सहायता पृष्ठ आपको मदद करेगा। (यह मेरी मदद की) http://help.github.com/remove-sensitive-data/


उस प्रतिबद्धता का रेफ स्पेस पाएं जिसे आप अपनी शाखा का सिर गिटूब पर रखना चाहते हैं और निम्न आदेश का उपयोग करें:

git push origin +[ref]:[branchName]

आपके मामले में, यदि आप केवल एक प्रतिबद्धता वापस जाना चाहते हैं, तो उस प्रतिबद्धता के लिए रेफरी की शुरुआत पाएं, उदाहरण के लिए यह 7f6d03 है, और जिस शाखा को आप बदलना चाहते हैं उसका नाम, उदाहरण के लिए यह मास्टर है, और निम्न कार्य करें:

git push origin +7f6d03:master

प्लस कैरेक्टर को --force रूप में व्याख्या किया जाता है, जो आवश्यक होगा क्योंकि आप इतिहास को फिर से लिख रहे हैं।

ध्यान दें कि जब भी आप एक प्रतिबद्धता को --force करते हैं तो आप संभावित रूप से अन्य लोगों के इतिहास को फिर से लिख सकते हैं जो आपकी शाखा को विलय करते हैं। हालांकि, अगर आप जल्दी से समस्या को पकड़ते हैं (इससे पहले कि कोई भी आपकी शाखा विलीन हो), आपको कोई समस्या नहीं होगी।


गिटहब के लिए - अपने स्थानीय रेपो में अपने काम (हार्ड) को रीसेट करें और एक नई शाखा बनाएं। नया पुश करें। पुरानी शाखा हटाएं। (यदि आप मास्टर शाखा को हटा रहे हैं तो डिफ़ॉल्ट शाखा के रूप में नया बनाएं)


जिस चीज को आप चाहते हैं उसे पाने के लिए फ़ाइलों को जोड़ें / हटाएं:

git rm classdir
git add sourcedir

फिर प्रतिबद्धता में संशोधन करें:

git commit --amend

पिछली, ग़लत प्रतिबद्धता को नए इंडेक्स राज्य को प्रतिबिंबित करने के लिए संपादित किया जाएगा - दूसरे शब्दों में, ऐसा होगा जैसे आपने पहली बार गलती नहीं की

ध्यान दें कि आपको केवल तभी करना चाहिए यदि आपने अभी तक धक्का नहीं दिया है। यदि आपने धक्का दिया है, तो आपको सामान्य रूप से एक फिक्स करना होगा।


रिमोट रिपोजिटरी से प्रतिबद्धता को हटाने के लिए:

 git push -f origin last_known_good_commit:branch_name

अपने स्थानीय भंडार से प्रतिबद्धता को हटाने के क्रम में:

git reset --hard HEAD~1

link


--preserve-merges करते समय --preserve-merges विकल्प का उपयोग करने के लिए शाखाकरण और विलय संरचना को संरक्षित करना महत्वपूर्ण है:

git rebase --preserve-merges -i HEAD^^

1. git reset HEAD^ --hard
2. git push origin -f

यह मेरे लिए काम करता है।


git push -f origin HEAD^:master

उसे पुश को "पूर्ववत" करना चाहिए।






github