प्रगति में छूट। नहीं कर सकता। कैसे आगे बढ़ना या रोकना (गर्भपात)?


139

जब मैं दौड़ता हूं:

git status

मैंने यह देखा:

rebase in progress; onto 9c168a5
You are currently rebasing branch 'master' on '9c168a5'.
(all conflicts fixed: run "git rebase --continue")
nothing to commit, working directory clean

जब मैं करता हूं:

ls `git rev-parse --git-dir` | grep rebase || echo no rebase

मैं देखता हूं: रिबेस-अप्लाई

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

git branch

दिखाता है:

* (no branch, rebasing master)
  develop
  master

मैं फँस गया हूँ। मुझे नहीं पता क्या करना है? क्या यह वास्तव में रिबेट करने में लंबा समय लेता है? git rebase --continueकुछ नहीं करता। मेरे पास git स्टेटस में कुछ भी नहीं है .. मैं बस रिबेट का इंतजार कर रहा हूं। मैं क्या कर सकता हूँ?

UDATE: यह आउटपुट है: git rebase --continue

Applying: no message
No changes - did you forget to use 'git add'?
If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.

When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".

जोड़ देना। पास कुछ नहीं।

जवाबों:


255

Rebase पृष्ठभूमि में नहीं होता है। "रिबेज़ इन प्रोग्रेस" का अर्थ है कि आपने एक रिबास शुरू किया, और रिबास संघर्ष के कारण बाधित हो गया। आपको रिबेज़ ( git rebase --continue) को फिर से शुरू करना होगा या इसे रद्द करना होगा ( git rebase --abort)।

git rebase --continueसुझाव से त्रुटि संदेश के रूप में , आपने गिट को एक पैच लागू करने के लिए कहा है जिसके परिणामस्वरूप खाली पैच है। सबसे अधिक संभावना है, इसका मतलब है कि पैच पहले से ही लागू था और आप इसका उपयोग करना छोड़ना चाहते हैं git rebase --skip


मैंने आपके अनुरोध के अनुसार git rebase --continue को शामिल करने के लिए पोस्ट को अपडेट किया।
जोसेफ चेम्बर्स

2
ठीक है, तो "यह फिर से शुरू - कुछ भी नहीं करता है" गलत था। मदद पाने के लिए आपको "git rebase --continue त्रुटियों को निम्न प्रकार से ..." लिखना चाहिए।
मथ्यू मोय

3
यह बहुत बुरी तरह से प्रलेखन, यह दोहराता रहता है कि आप 'रीट रिबेस - कॉन्टिन्यू' करते हैं और आप यह कहने के अनंत तरीके से समाप्त हो जाएंगे।
जीन-पॉल

6
git rebase --स्काइप ने किया!
बोरहज

जैसा कि यह रिश्तेदार शुरुआती (मेरे जैसे) के लिए एक सवाल है, मुझे लगता है कि यह चलाने के इस सभी बात का उल्लेख करने के लायक है - या एक नया टर्मिनल खोलने और रेपो में वापस जाने की आवश्यकता है ... इस मुद्दे के बिना मेरे उदाहरण में कुछ भी नहीं चलेगा ऐसा करने के लिए,
Kdean571

10

मैं 'रिबास स्टेटस' में फंस गया, मुझे मिल गया

On branch master
Your branch is up to date with 'origin/master'.

You are currently rebasing.
  (all conflicts fixed: run "git rebase --continue")

nothing to commit, working tree clean

लेकिन चल रहा है git rebase --skipउपज error: could not read '.git/rebase-apply/head-name': No such file or directory

दौड़ने में rm -fr ".git/rebase-apply"मदद मिली।

नोट: बेशक, इसे केवल तभी करें जब आप रिबेस के बारे में परवाह नहीं करते हैं या यदि आप पिछले रिबेस पर फंस गए हैं तो आप अब और नहीं चाहते हैं।


8
  • चरण 1: चलते रहो git rebase --continue

  • चरण 2: फिर CONFLICTS को ठीक करें git add .

  • चरण 1 पर वापस जाएं, अब यदि यह कहता है कि no changes ..चलाएं git rebase --skipतो चरण 1 पर वापस जाएं

  • यदि आप केवल रिबास रन को छोड़ना चाहते हैं git rebase --abort

  • एक बार सभी परिवर्तन चलाए जाते हैं git commit -m "rebase complete"और आप किए जाते हैं।


6

आपने अपने रिपॉजिटरी को रिबेस करने के लिए कहा था। ऐसा लगता है कि आप एक कमिट पर थे (SHA 9c168a5 द्वारा पहचाना गया) और फिर किया git rebase masterया git pull --rebase master

आप उस प्रतिबद्ध पर शाखा मास्टर को पुन: पेश कर रहे हैं। आप के माध्यम से छूट समाप्त कर सकते हैं git rebase --abort। इससे पहले कि आप रिबास करना शुरू करते हैं, उस स्थिति में वापस आ जाएंगे।


मैं कभी ए git rebase/pull --rebase master। मैं अक्सर इस स्थिति में समाप्त होता हूं ... एक संघर्ष के कारण। मैं एक फ़ाइल बदलता हूं, एक पुल करता हूं, मेरे बदलावों को पुनर्स्थापित करता हूं और नया पैच खाली होता है जो गिट के मस्तिष्क को नुकसान पहुंचाता है जो तब इस "रिबेस मोड" में प्रवेश करने का निर्णय लेता है ...
एलेक्सिस विल्के

6

मैं हाल ही में इस स्थिति में आया। एक छूट के दौरान संघर्षों को हल करने के बाद, मैंने दौड़ने के बजाय अपने बदलाव किए git rebase --continue। यह एक ही संदेश आप को देखा है जब आप अपने भाग गया पैदावार git statusऔर git rebase --continueआदेशों। मैंने समस्या को हल करके चलाया git rebase --abort, और फिर रिबास को फिर से चलाया। एक संभावना भी छूट को छोड़ सकती है, लेकिन मुझे यकीन नहीं था कि मुझे किस राज्य में छोड़ दिया जाएगा।

$ git rebase --continue
Applying: <commit message>
No changes - did you forget to use 'git add'?
If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.

When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".

$ git status
rebase in progress; onto 4df0775
You are currently rebasing branch '<local-branch-name>' on '4df0775'.
  (all conflicts fixed: run "git rebase --continue")

nothing to commit, working directory clean

--abort(+1) के अलावा , अब आपके पास --quit( stackoverflow.com/a/41363262/6309 )
VONC

संघर्षों को ठीक करने के बाद। फिर कॉल कमिट। कुछ और काम करें, फिर कॉल कमिट करें। यदि इस पद्धति का उपयोग करें रिबेट --abort, प्रतिबद्ध संघर्ष के बाद आपके द्वारा किए जा रहे सभी काम दूर हो जाएंगे। तो सावधान रहें
जिन

3

अगर git rebase --abortकाम नहीं करता है और आप अभी भी मिलता है

त्रुटि: '.git / rebase-apply / head-name' नहीं पढ़ सका: ऐसी कोई फ़ाइल या निर्देशिका नहीं

प्रकार:

git rebase --quit

0

मैं एक पर autorebasegit करने के लिए अपने सेटअपgit checkout

# in my ~/.gitconfig file
[branch]
    autosetupmerge = always
    autosetuprebase = always

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

हालाँकि, इसका एक साइड इफ़ेक्ट है, जब मैं किसी ब्रांच में स्विच करता git cherry-pick <commit-id>हूँ और तब मैं इस अजीब अवस्था में हर बार संघर्ष करता हूँ।

मुझे वास्तव में गर्भपात करना है rebase, लेकिन पहले मैं संघर्ष को ठीक करता हूं, git add /path/to/fileफ़ाइल (इस मामले में संघर्ष को हल करने का एक और बहुत अजीब तरीका है?), फिर ए git commit -i /path/to/file। अब मैं गर्भपात कर सकता हूं rebase:

git checkout <other-branch>
git cherry-pick <commit-id>
...edit-conflict(s)...
git add path/to/file
git commit -i path/to/file
git rebase --abort
git commit .
git push --force origin <other-branch>

दूसरा git commit .गर्भपात से आता है। अगर मुझे पता चला कि मुझे rebaseजल्द से जल्द गर्भपात कराना चाहिए तो मैं अपना जवाब ठीक कर लूंगा ।

--forceयदि आप अन्य प्रतिबद्ध छोड़ सकते हैं और दोनों शाखाओं नहीं कर रहे हैं धक्का की आवश्यकता नहीं है चिकनी (दोनों एक दूसरे से प्रतिबद्ध याद कर रहे हैं)।


"अन्यथा, यह स्वचालित रूप से तब जुड़ जाता है जब आप शाखाओं के बीच स्विच करते हैं" - उम, नहीं। जब आप शाखाओं को स्विच करते हैं तो गिट किसी प्रकार का मर्ज या रिबेस नहीं करता है। नई शाखाओं के लिए कॉन्फ़िगर autosetupmergeकिया गया है के साथ क्या करना git pullहै।
मार्नेन लाईबो-कोसर

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

Git आपको बताएगा कि क्या आपके अनक्मिटेड परिवर्तन शाखाओं को स्विच करने से रोकेंगे, इसलिए वहाँ के बारे में चिंता करने के लिए बहुत कुछ नहीं है? या आप कुछ और बात कर रहे हैं?
मर्नेन लाईबो-कोसर

0

IDE से ABORT / SKIP / CONTINUE का एक अन्य विकल्प

वीसीएस> गिट> एबट रिबासिंग

यहाँ छवि विवरण दर्ज करें


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.