2012-01-17 6 views
7

अस्तित्व में नहीं था, मैंने किसी एक काम में गलती की है। अब मैं इस प्रतिबद्धता को पूरी तरह से हटाना चाहता हूं, इसलिए ऐसा लगता है कि यह कभी अस्तित्व में नहीं है। मैं इसे लॉग में देखना नहीं चाहता हूं।LOG से 'गिट प्रतिबद्ध' को कैसे हटाएं, जैसे कि यह कभी भी

मैंने this question ("How to delete a 'git commit'") से सभी युक्तियों का प्रयास किया है, लेकिन मैं लॉग में प्रतिबद्धता देख सकता हूं। मैं इसे पूरी तरह से कैसे हटा सकता हूं?

- संपादित करें -

ठीक है, मैं पूरी तरह से जानकारी नहीं देते हैं। केविन Ballard सही हैं।

अब तक, मैं इस प्रतिबद्धता को धक्का नहीं देता, यह केवल मेरी मशीन में है। ouah जवाब काम करते हैं, आदेश

git log 

नहीं दिखाया जाएगा, लेकिन क्या आदेश

git reset --hard HEAD^ 

करना है "chekout पिछले प्रतिबद्ध है और इस के लिए शाखा बदल", तो मैं देखना जारी जो SmartGit जैसे ग्राफ़ प्रोग्राम के साथ प्रतिबद्ध है।

--Edit 2--

नहीं, यह एक SmartGit बग है !!!! प्रतिबद्धता वास्तव में गायब हो जाती है। मुझे लॉग की खिड़कियां बंद करनी हैं और फिर से खोलना है। प्रतिबद्धता अब और नहीं है।

+0

मुझे गलत हो सकता है, लेकिन मुझे लगता है कि आप नहीं कर सकते। – zneak

+0

@zneak: आप कर सकते हैं, लेकिन Rodrigo अधिक जानकारी देने की जरूरत है। क्या यह प्रतिबद्धता कहीं भी धक्का दी गई है? क्या आप इस प्रतिबद्धता और डिस्क से इसकी फ़ाइलों के बारे में सारी जानकारी मिटाने की परवाह करते हैं, या यह सुनिश्चित करना ठीक है कि यह 'गिट लॉग' में दिखाई नहीं दे रहा है (और समय के बाद कुछ समय बाद स्वाभाविक रूप से कचरा-संग्रहित किया जा सकता है) ? –

+0

इस http://stackoverflow.com/questions/927358/git-undo-last-commit – Shraddha

उत्तर

10

यदि यह पिछले प्रतिबद्ध

git reset --hard HEAD^ 

प्रतिबद्ध

git rebase -i commit_hash^ 

एक संपादक खुल जाएगा अगर यह आखिरी नहीं है, के साथ पूरी लाइन को हटाना प्रतिबद्ध, बचाने के लिए और छोड़ दिया।

ध्यान दें कि इतिहास को फिर से लिखने या यदि शाखा पहले से ही धक्का दिया जिसमें आम तौर पर एक बुरा विचार है और आप का उपयोग करने के

git revert commit_hash 

है कि एक नया जोड़ देगा प्रतिबद्ध है कि reverts प्रतिबद्ध commit_hash पसंद कर सकते हैं रिबेसिंग।

+2

में युक्तियों को आज़माएं यदि आप एक ही प्रतिबद्धता को हटाने का प्रयास कर रहे हैं, तो आप 'गिट रीबेस --onto $ SHA1 का भी उपयोग कर सकते हैं^$ SHA1' (जहां '$ SHA1' हटाने के लिए प्रतिबद्ध है)। इसके अलावा, यह चेतावनी के साथ आता है कि यह विलय पुन: पेश नहीं करेगा। आप इसे विलयों को आजमाने और पुन: पेश करने के लिए '-पी' ध्वज दे सकते हैं, लेकिन अगर आपके द्वारा हटाई गई प्रतिबद्धता का कोई विलय समाधान पर असर पड़ता है तो यह ठीक से काम नहीं कर सकता है।यह भी ध्यान रखें कि '-i' के साथ '-पी' मिश्रण करना एक बुरा विचार है (गिट-रीबेस मैनपेज में BUGS अनुभाग देखें)। –

+0

@ouah आपको शायद यह उल्लेख करना चाहिए कि यदि शाखा को धक्का दिया गया है, तो यह एक खराब विचार है। – Richard

+0

@ रिचर्ड ठीक है, किया! – ouah

1

यह आदेश (सावधान रहना, यह इतिहास के पुनर्लेखन हैं):

git rebase --onto commitHash^ commitHash 

(@ ouah के समाधान के बजाय केविन की मेरे लिए काम नहीं था और किया था, लेकिन उनके समाधान एक टिप्पणी, यह होना चाहिए नहीं होना चाहिए इस तरह का उत्तर बनें।)

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