Supose आप इस परिदृश्य है:
* 1bd2200 (HEAD, master) another commit
* d258546 bad commit
* 0f1efa9 3rd commit
* bd8aa13 2nd commit
* 34c4f95 1st commit
आप कहाँ d258546 दूर करने के लिए अर्थात चाहते हैं "बुरा प्रतिबद्ध"।
आप एक इंटरैक्टिव रिबेस कोशिश करूँगा इसे हटाने के लिए: git rebase -i 34c4f95
फिर अपने डिफ़ॉल्ट संपादक कुछ इस तरह के साथ पॉप जाएगा:
pick bd8aa13 2nd commit
pick 0f1efa9 3rd commit
pick d258546 bad commit
pick 1bd2200 another commit
# Rebase 34c4f95..1bd2200 onto 34c4f95
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
सिर्फ प्रतिबद्ध आप पट्टी और सहेजना चाहते के साथ लाइन को दूर
pick bd8aa13 2nd commit
pick 0f1efa9 3rd commit
pick 1bd2200 another commit
...
Git इस अपने इतिहास से (कुछ इस तरह छोड़ने सह में हैश परिवर्तन मन प्रतिबद्ध दूर करने के लिए आगे बढ़ना होगा: + संपादक से बाहर निकलें mmits हटा से वंश प्रतिबद्ध):
* 34fa994 (HEAD, master) another commit
* 0f1efa9 3rd commit
* bd8aa13 2nd commit
* 34c4f95 1st commit
अब, के बाद से मुझे लगता है कि आप पहले से ही धक्का दिया है कि बुरा gitlab के लिए प्रतिबद्ध है, तो आप (लेकिन -f
विकल्प के साथ यह को रोकने के लिए भंडार करने के लिए अपने ग्राफ repush करने की आवश्यकता होगी एक गैर-फास्ट फॉरवर्ड करने योग्य इतिहास यानी git push -f <your remote> <your branch>
)
कृपया अतिरिक्त सावधान रहें और सुनिश्चित करें कि कोई भी सहकर्मी पहले से ही अपनी शाखाओं में "खराब प्रतिबद्धता" वाले इतिहास का उपयोग कर रहा है।
वैकल्पिक विकल्प:
इतिहास को फिर से लिखने के बजाय, आप बस एक नया प्रतिबद्ध जो परिवर्तन आपके बुरा प्रतिबद्ध द्वारा शुरू की नकारता, यह करने के लिए सिर्फ टाइप git revert <your bad commit hash>
बना सकते हैं। यह विकल्प शायद उतना ही साफ नहीं है, लेकिन यह अधिक सुरक्षित है (यदि आप पूरी तरह से अवगत नहीं हैं कि आप एक इंटरैक्टिव रीबेस के साथ क्या कर रहे हैं)।
क्या आपने अपने gitlab सर्वर – marcusshep
@marcusshep हाँ को प्रतिबद्धता को धक्का दिया था! – mhery
जैसा कि @ अलवारो-पी ने नीचे दिए गए उत्तर के बाद एक टिप्पणी पर उल्लेख किया है, जब आप धक्का देते हैं तो आपको बल (-f) को मजबूर करने की आवश्यकता होती है और यह भी सुनिश्चित करता है कि शाखा गिटलैब में संरक्षित नहीं है। – user12345