gitlab

2016-10-25 9 views
7

पर प्रतिबद्धता हटाएं मैं GitLab पर किए गए प्रतिबद्धता को कैसे हटा सकता हूं? यह प्रतिबद्धता जो मैंने बनाई है वह अब सिर नहीं है।gitlab

अगर मैं इसे हटा नहीं सकता, तो क्या मैं संपादित कर सकता हूं?

जब यह प्रमुख था, मैं करने की कोशिश की:

git reset --soft HEAD 

git reset --soft HEAD^1 

git revert HEAD 

git rebase -i HEAD 

git rebase -i HEAD~1 

git reset --hard HEAD 

git reset --hard Id-Code 

मैं पहले से ही यह rebase करने की कोशिश की, लेकिन यह अभी भी शाखा पर रहता है। अब मैंने इसे सिर से हटा दिया है, लेकिन यह अभी भी वहां है।

एक और आदेश है?

+0

क्या आपने अपने gitlab सर्वर – marcusshep

+0

@marcusshep हाँ को प्रतिबद्धता को धक्का दिया था! – mhery

+0

जैसा कि @ अलवारो-पी ने नीचे दिए गए उत्तर के बाद एक टिप्पणी पर उल्लेख किया है, जब आप धक्का देते हैं तो आपको बल (-f) को मजबूर करने की आवश्यकता होती है और यह भी सुनिश्चित करता है कि शाखा गिटलैब में संरक्षित नहीं है। – user12345

उत्तर

12

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> बना सकते हैं। यह विकल्प शायद उतना ही साफ नहीं है, लेकिन यह अधिक सुरक्षित है (यदि आप पूरी तरह से अवगत नहीं हैं कि आप एक इंटरैक्टिव रीबेस के साथ क्या कर रहे हैं)।

+0

निश्चित रूप से 'गिट रिवर्ट' की अनुशंसा करेगा।बहुत कम काम, और ओवरराइटिंग इतिहास से अधिक सुरक्षित (जो डिजाइन द्वारा मुश्किल है)। बेशक, यह माना जा रहा है कि कोई संवेदनशील जानकारी धक्का नहीं दी गई थी। – tcooc

+0

@tcooc अच्छी तरह से, मेरे मामले में, संवेदनशील जानकारी – mhery

+1

@mhery को धक्का दिया गया था, तो पहला विकल्प वह है जो आप चाहते हैं। सुनिश्चित करें कि आप दोबारा जांच लें कि आपके सभी काम धक्का देने से पहले क्रम में हैं क्योंकि 'गिट पुश-एफ' स्थायी है और उलट नहीं है। – tcooc

3

1.git --hard CommitId रीसेट मूल मास्टर -f

2.git धक्का

1 आदेश अपने सिर को आराम commitid को होगा और 2 कमांड कि सभी के लिए प्रतिबद्ध के बाद प्रतिबद्ध नष्ट करेगा मास्टर शाखा पर आईडी।

+0

पुश में -f जोड़ने के लिए याद रखें अन्यथा इसे अस्वीकार कर दिया जाएगा। –

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