मैं शाखाओं को स्विच क्यों नहीं कर सकता हूं?


81

मैं शाखाओं को git में बदलने की कोशिश कर रहा हूं लेकिन मुझे यह त्रुटि संदेश मिल रहा है:

error: you need to resolve your current index first

मैं xcode4 के तहत git का उपयोग कर रहा हूं

git status
# On branch DateCode
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate
#
no changes added to commit (use "git add" and/or "git commit -a")
Frappuccinos-MacBook-Pro:whereami

# अनमैरिड पथ: # ("git reset HEAD <file> ..." को unstage करने के लिए) का उपयोग करें # ("git add / rm <file> ..." का उपयोग रिज़ॉल्यूशन को चिन्हित करने के लिए उपयुक्त) #
lampShade

कृपया उस जानकारी को पेस्ट करने के लिए अपने प्रश्न को संपादित करें, यह टिप्पणियों में अपठनीय है।
Mat

git reset {{currentBranchName}}तब git checkout . आपकी समस्या का समाधान होगा
मुथुकुमार सेल्वराज

क्या इससे आपके सवाल का जवाब मिलता है? Git मर्ज की त्रुटियां
Henke

जवाबों:


96

यदि आप git स्थिति में सूचीबद्ध किसी भी मर्ज को नहीं चाहते हैं तो यह आज़माएँ:

git reset --merge

यह इंडेक्स को रीसेट करता है और उन वर्किंग ट्री में फाइलों को अपडेट करता है जो बीच <commit>और अलग-अलग हैं HEAD, लेकिन जो इंडेक्स और वर्किंग ट्री के बीच अलग-अलग हैं (यानी जिनके बदलाव नहीं हुए हैं)।

यदि कोई फ़ाइल जो कि <commit>इंडेक्स और इंडेक्स के बीच भिन्न है, में परिवर्तन होता है - रीसेट निरस्त हो जाता है।

इसके बारे में अधिक जानकारी - https://www.techpurohit.com/list-some-useful-git-commands और Doc लिंक - https://git-scm.com/docs/git-reset


53

यदि आप किसी मर्ज द्वारा उत्पादित विरोध थे both modified, git statusतो आप आउटपुट में समाप्त होते हैं । जब तक आप इन संघर्षों को हल नहीं कर लेते, तब तक आप शाखा को बदलने नहीं देते। यदि आप उस फ़ाइल को संपादित करते हैं, तो आपको उसमें कुछ संघर्ष मार्करों को देखना चाहिए - गिट मैनुअल में उन संघर्षों को हल करने के लिए एक गाइड है । (चूंकि कर्नेल डॉट इन वर्तमान में नीचे है, आप उस गाइड को यहां पा सकते हैं ।)

वैकल्पिक रूप से, यदि आपको लगता है कि मर्ज एक गलती थी, तो आप इसे पूर्ववत कर सकते हैं: git reset --merge


19

यदि आप उन परिवर्तनों के बारे में परवाह नहीं करते हैं जो कहते हैं कि बकाया हैं, तो आप एक बल जांच कर सकते हैं।

git checkout -f {{insert your branch name here}}


3
यह वही था जो मुझे चाहिए था - मेरे पास एक परीक्षण शाखा थी जहां बहुत सारे संघर्षों के साथ एक मर्ज विफल हो गया था, और मैं सिर्फ शाखा को फेंकना चाहता था। मैं एक अच्छी शाखा में वापस जाने में सक्षम नहीं था (चेकआउट विफल रहा, और git reset --mergeअसफल भी रहा)। लेकिन checkout -fमहान काम किया।
चाड

6

मुझे यह संदेश तब मिला जब रिमोट और इंडेक्स से नई फाइलें अपडेट होने से यह बेकार हो गया। सूचकांक को ठीक करने की कोशिश की गई, लेकिन Xcode 4.5, GitHub.app (103) और GitX.app (0.7.1) के माध्यम से हल करना विफल रहा। तो, मैंने ऐसा किया:

git commit -a -m "your commit message here"

जो गिट इंडेक्स को दरकिनार कर काम करता है।

Git और Xcode के बारे में समझने में मदद करने वाली दो ब्लॉग पोस्ट हैं:

  • एक्सकोड 4.5 पर रे वेंडरलिच और पर
  • 2008 से ओलिवर स्टील


  • 6

    आप हेड के साथ अपनी शाखा को रीसेट कर सकते हैं

    git reset --hard branch_name
    

    फिर शाखाओं को लाएं और उन शाखाओं को हटा दें जो स्थानीय से रिमोट पर नहीं हैं,

    git fetch -p 
    

    1

    ब्रांच को स्विच करने से पहले आपको किसी भी सहेजे नहीं गए परिवर्तनों को करने या नष्ट करने की आवश्यकता है।

    यदि आप इसका अर्थ नहीं हटाते हैं, तो इसका अर्थ यह नहीं होगा कि यदि आप सहेजे गए परिवर्तन को हटा देंगे, तो आप शाखा को स्विच नहीं होने देंगे।


    त्रुटि और git statusआउटपुट से संकेत मिलता है कि यह केवल कार्यशील पेड़ में परिवर्तन नहीं है जो कि शाखा को बदलकर खो जाएगा - वे संकेत देते हैं कि एक मर्ज विफल हो गया है और संघर्ष को सूचकांक में हल किया जाना चाहिए।
    मार्क लोंगेयर

    1

    चूंकि फ़ाइल को दोनों द्वारा संशोधित किया गया है, या तो आपको इसे जोड़ने की आवश्यकता है

    git add Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate
    

    या यदि आप योय परिवर्तन की उपेक्षा करना चाहते हैं, तो करें

    git reset HEAD Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate
    

    उसके बाद बस अपनी ब्रांच को स्विच करें। यह ट्रिक करना चाहिए।

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