2010-09-10 18 views
65

मैं अपने स्थानीय गिट भंडार में थोड़ी गड़बड़ी करने में कामयाब रहा। मैं following instructions का उपयोग कर एक टूटी हुई प्रतिबद्धता को ठीक करने की कोशिश कर रहा था। "गिट प्रतिबद्ध --amend" (और गिट रिबेस --इंटरएक्टिव के बाद) चलाने से पहले मैंने फैसला किया कि मेरे परिवर्तन गलत थे और इसलिए मैंने "गिट रीसेट हेड - हार्ड" निष्पादित किया। अच्छा विचार नहीं, मैं आपको बताता हूं।गिट - "दूषित" इंटरैक्टिव रीबेस कैसे ठीक करें?

अब इंटरैक्टिव रीबेस "अटक" लग रहा है। गिट वर्तमान शाखा को दिखाता है (| REBASE-m)। हर आदेश (सीडी .., एलएस, Git rebase ...) मेरी भंडार के अंदर निम्न त्रुटि देता है:

$ git rebase --abort 
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory 
cat: c:/_work/project/src/git/.git/rebase-merge/head-name: No such file or directory 
cat: c:/_work/project/src/git/.git/rebase-merge/orig-head: No such file or directory 
HEAD is now at 4c737fb Revert "Modified file names" 
rm: cannot remove `c:/_work/project/src/git/.git/rebase-merge/done': Permission denied 
rm: cannot remove directory `c:/_work/project/src/git/.git/rebase-merge': Directory 
not empty 
cat: .git/rebase-merge/head-name: No such file or directory 

यहाँ परिणाम है:

cat: .git/rebase-merge/head-name: No such file or directory

यहाँ कैसे Git rebase --abort लग रहा है की तरह है गिट रिबेस का - CONTinue:

$ git rebase --continue 
cat: c:/_work/project/src/git/.git/rebase-merge/prev_head: No such file or directory 
cat: c:/_work/project/src/git/.git/rebase-merge/end: No such file or directory 
cat: c:/_work/project/src/git/.git/rebase-merge/msgnum: No such file or directory 
cat: c:/_work/project/src/git/.git/rebase-merge/onto: No such file or directory 
cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory 
prev_head must be defined 
cat: .git/rebase-merge/head-name: No such file or directory 

कोई विचार? मैं स्थिति को वापस राज्य में रीसेट करना चाहता हूं, इससे पहले कि मैंने अपना विचार-विमर्श रिबेस ऑपरेशन शुरू किया था।

4c737fb Revert "Modified file names" 
247ac02 Modified file names 
33141e6 Message modifications 
10a4a04 Modified db script 

और यह ठीक है:

यहाँ कैसे Git लॉग --oneline स्थिति से पता चलता है।

मैं msysgit v1.7.0.2 का उपयोग कर रहा हूं।

उत्तर

57

ऐसा लगता है कि गिट ने .git/rebase-merge निर्देशिका को निकालने का प्रयास किया लेकिन इसे पूरी तरह से निकालने में सक्षम नहीं था। क्या आपने उस फ़ोल्डर को कॉपी करने की कोशिश की है? यदि मौजूद है तो .git/rebase-apply फ़ोल्डर को भी कॉपी करें।

+6

उनका कहना है कि बाहर के लिए धन्यवाद किया। मैं बस कंप्यूटर को पुनरारंभ करके अपनी समस्या को ठीक करने में सक्षम था। मुझे यकीन नहीं है कि क्या गलत हुआ क्योंकि किसी भी तरह से .git \ rebase-merge फ़ोल्डर में प्रत्येक पहुंच के कारण "एक्सेस अस्वीकृत" -error का कारण बन गया। –

+16

रीबूट मेरे लिए काम नहीं करता था, लेकिन 'गिट रीबेज --बॉर्ट' (http://stackoverflow.com/a/4757777/146044 से) _did_ कार्य। – Backus

+1

बस गिट खोल (विंडोज़) को मेरे लिए काम करने के लिए फिर से शुरू करना ('गिट रीबेस --बॉर्ट' काम नहीं कर रहा था) – mhand

78

मुझे ज़ोंबी vim.exe प्रक्रिया के कारण एक ही समस्या थी। इसे टास्क मैनेजर में मारना, उसके बाद git rebase --abort इसे ठीक कर दिया गया।

+0

यह मेरी समस्या भी थी। मैंने sysinternals 'हैंडल 'कमांड का इस्तेमाल किया और देखा कि एक प्रक्रिया (sh.exe) फ़ाइल लॉक थी। 'Pskill ' का उपयोग करके यह मेरे लिए तय किया गया। –

0

एक बार जब आप संतोषजनक रूप से रीसेटिंग एक्स संख्याओं को पूरा कर लेते हैं, तो अंतिम आदेश git rebase --continue होना चाहिए। यह प्रक्रिया को पूरा करता है और रीबेस मोड से बाहर निकलता है।

7

ग्रहण में एक ही समस्या थी। Rebase => ग्रहण से निरस्त नहीं कर सका।

गिट बैश से गिट रिबेस --बॉर्ट निष्पादित करने के लिए मेरे लिए काम किया।

0

मुझे एक ही समस्या थी। मैंने अन्य पोस्ट में सुझाए गए प्रक्रिया एक्सप्लोरर का उपयोग किया (मैं उस पोस्ट को नहीं ढूंढ पा रहा हूं) और यह पता लगाया कि किस प्रक्रिया में फाइल पर लॉक है और इसे मार दें। फिर जरूरतों के अनुसार --continue या --abort निष्पादित करें

-1

मैं ग्रहण में गिट का उपयोग कर रहा हूं और मुझे एक ही समस्या हो रही थी।

आखिर में मैंने पाया कि "रीबेस ..." मेनू प्रविष्टि अस्थायी रूप से उप-मेनू में परिवर्तित हो गई थी।

टीम> रिबेस -> बीच में बंद करें

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

5

विंडोज़ पर, यदि आप अनिच्छुक हैं या मशीन को पुनरारंभ करने में असमर्थ हैं तो नीचे देखें।

स्थापित प्रोसेस एक्सप्लोरर: https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

प्रोसेस एक्सप्लोरर, का पता लगाएं> फ़ाइल हैंडल या DLL में ...

त्रुटि में उल्लेख किया फ़ाइल नाम में लिखें (मेरी त्रुटि के लिए यह Git-rebase- था todo 'लेकिन उपरोक्त प्रश्न में,' किया ')।

प्रक्रिया एक्सप्लोरर फ़ाइल पर लॉक रखने की प्रक्रिया को हाइलाइट करेगा (मेरे लिए यह 'grep' था)।

प्रक्रिया को मारें और आप मानक तरीके से गिट कार्रवाई को निरस्त करने में सक्षम होंगे।

1

इस नाम के साथ एक फ़ाइल बनाएँ: का उपयोग git rebase

1

मेरे मामले में यह था, क्योंकि मैं संबंधित परियोजना निर्देशिका में संबंधित Git परियोजना में SmartGit के लिए लॉग और कुल कमांडर खोला था में

touch .git/rebase-merge/head-name 

और से । जब मैंने दोनों को बंद कर दिया तो मैं बिना किसी समस्या के पुनर्जीवित करने में सक्षम था।

जितना अधिक मैं इसके बारे में सोचता हूं, उतना ही मुझे कुल कमांडर पर संदेह होता है, यानी विंडोज़ को खुली निर्देशिका पर लॉक होता है, जिसमें गिट रिबेस कुछ करने की कोशिश कर रहा था।

दोस्ताना सलाह: जब आप कुछ ठीक करने का प्रयास करते हैं, तो हमेशा एक समय में एक बदलाव करें। ;)

0

मेरे मामले में मुद्दों इस सभी विकल्पों का परीक्षण और अभी भी करने के बाद मैं sudo git rebase --abort की कोशिश की और यह पूरी बात

+0

सावधान रहें यदि आप इसे वास्तविक रिबेस के बीच में कर रहे हैं। बस मेरे परिवर्तन खो गए: '( –

+0

इसे "दूषित" माना जाता था, फिर आप रीबेस के साथ शुरू करते हैं –

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