"पथ को अपडेट नहीं किया जा सकता और उसी समय शाखा में स्विच किया जा सकता है"


186

मैं कभी-कभी checkout -bएक नई शाखा बनाने के लिए विकल्प का उपयोग करता हूं , उसी समय इसकी जांच करता हूं और एक कमांड में ट्रैकिंग सेट करता हूं ।

एक नए वातावरण में, मुझे यह त्रुटि मिलती है:

$ git checkout -b test --track origin/master
fatal: Cannot update paths and switch to branch 'test' at the same time.
Did you intend to checkout 'origin/master' which can not be resolved as commit?

Git को यह पसंद क्यों नहीं है? यह उसी रेपो के साथ काम करता था।


6
त्रुटि संदेश आपको बता रहा है कि origin/masterएक प्रतिबद्ध आईडी नहीं है, यानी एक वैध दूरस्थ शाखा नहीं है। क्या यह git branch -rआउटपुट में दिखाई देता है?
torek

यह नहीं था पता चलता है कि मैंने क्लोन के दौरान सभी दूरस्थ शाखाओं की जांच नहीं की।
मर्कफुल

जवाबों:


199

origin/masterजिसे संकल्प के रूप में हल नहीं किया जा सकता

अजीब बात है: आपको अपने रिमोट की जांच करने की आवश्यकता है:

git remote -v

और यह सुनिश्चित करें कि origin:

git fetch origin

फिर:

git branch -avv

(यह देखने के लिए कि क्या आपने एक origin/masterशाखा प्राप्त की है)

अंत में, भ्रमित करने के git switchबजाय Git 2.23+ (अगस्त 2019) का उपयोग करें।git checkout

git switch -c test --track origin/master

11
मेरे पास मेरी कमांड में एक टाइपो था जिसने इस त्रुटि को ट्रिगर किया; मैं अपने रिमोट को सही तरीके से स्पेलिंग नहीं दे रहा था!
क्िक्स

2
यह एक नई शाखा थी और मेरे स्थानीय भंडार को इसके बारे में पता नहीं था। मुझे एक pullकाम करना था और फिर इस कमांड ने काम किया।
कोडिंग_डॉट

2
यह उत्तर मददगार था क्योंकि इससे मुझे पता चला कि वास्तव में कुछ अजीब चल रहा है: उपाय सही तरीके से सेट किए गए हैं, लेकिन नई दूरस्थ शाखा बस नहीं है। जब मैं रिमोट को एक साफ निर्देशिका में क्लोन करता हूं, तो यह काम करता है। क्या मेरी .gitनिर्देशिका किसी तरह भ्रष्ट हो सकती है?
कोनराड रुडोल्फ

git Remote -v ने इस त्रुटि को घातक बताया: मान्य ऑब्जेक्ट नाम नहीं: 'Remote'।
करीम समीर

@KarimSamir आप एक अलग प्रश्न पूछ सकते हैं (अपने OS और git संस्करण के साथ), क्योंकि git remote -vgit रेपो में निष्पादित कार्य करता है।
वॉनक

78

FWIW: यदि आपके पास अपने ब्रांचनाम में एक टाइपो है तो आपको यही त्रुटि मिलेगी।


4
वास्तव में यह अच्छा होगा यदि कोई व्यक्ति Git Developers को इस बारे में बताने के लिए समय ले सकता है, त्रुटि संदेश बहुत जानकारीपूर्ण नहीं है;)
Scorchio

8
हां, यह मेरी समस्या थी, मेरे शाखा नाम में एक स्थान था
करीम समीर

यहाँ भी, मैं (अतिरिक्त ) के git checkout -b origin mybranchबजाय कोशिश कर रहा थाgit checkout -b mybranchorigin
Guillaume Renoult 23

मैंने अपनी शाखा का नाम कॉपी-पेस्ट किया और शाखा के नाम के बाद व्हॉट्सएप को पीछे छोड़ दिया, जिससे यह त्रुटि हुई।
learningKnight

मैं orgin/my-branchइसके बजाय चेकआउट करने की कोशिश कर रहा था origin/my-branch। एक को याद किया iऔर मैं थोड़ी देर के लिए अपना सिर खुजलाता रहा कि यह समझने के लिए कि एक पुराना सहयोगी साथ जाने से इनकार क्यों कर रहा है। टाइपो वास्तव में मुद्दा था।
DDM

55

आप इस त्रुटि के संदर्भ में प्राप्त कर सकते हैं, उदाहरण के लिए ट्रैविस का निर्माण, डिफ़ॉल्ट रूप से, चेक कोड के साथ git clone --depth=50 --branch=master। मेरे ज्ञान का सबसे अच्छा करने के लिए, आप के --depthमाध्यम से नियंत्रित कर सकते हैं .travis.ymlलेकिन नहीं --branch। चूंकि दूरस्थ द्वारा केवल एक ही शाखा को ट्रैक किया जा रहा है, इसलिए आपको दूरस्थ रूप से वांछित दूरस्थ रेफरी को ट्रैक करने के लिए स्वतंत्र रूप से अपडेट करने की आवश्यकता है।

इससे पहले:

$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master

जोड़:

$ git remote set-branches --add origin branch-1
$ git remote set-branches --add origin branch-2
$ git fetch

उपरांत:

$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/branch-1
remotes/origin/branch-2
remotes/origin/master

5
मेरे लिए इसे हल किया। मैंने एक उथले --depth = 1 क्लोन का उपयोग किया और यही वह है जो मुझे शाखाओं को स्विच करने के लिए आवश्यक था।
सवितय्सो

1
जी हां, गहराई की बात निश्चित रूप से इस त्रुटि का परिणाम है! यदि संभव हो तो, मैं सुझाव दूंगा कि पहले कुछ वाक्यों को गहराई की बात पर जोर देने के लिए संपादित किया जाए।
डबस्लो

19

यह साधारण सी बात मेरे लिए काम कर गई!

यदि यह कहता है कि यह एक ही समय में 2 चीजें नहीं कर सकता है, तो उन्हें अलग करें।

git branch branch_name origin/branch_name 

git checkout branch_name

वास्तविक समस्या क्या है यह पता लगाना आसान बनाता है
Z. खुल्लाह

9

जब आप इस समस्या पर ठोकर खाते हैं तो आप इन चरणों का पालन कर सकते हैं:

  1. अपने स्थानीय भंडार के लिए जानी जाने वाली शाखाओं को सूचीबद्ध करने के लिए निम्नलिखित कमांड चलाएँ।

git रिमोट शो की उत्पत्ति

जो इसे आउटपुट करता है:

 remote origin
  Fetch URL: <your_git_path>
  Push  URL: <your_git_path>
  HEAD branch: development
  Remote branches:
    development                             tracked
    Feature2                                tracked
    master                                  tracked
    refs/remotes/origin/Feature1         stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    Feature2     merges with remote Feature2
    development  merges with remote development
    master       merges with remote master
  Local refs configured for 'git push':
    Feature2     pushes to Feature2     (up to date)
    development  pushes to development (up to date)
    master       pushes to master      (local out of date)
  1. (जैसे URL URL इत्यादि) विवरण को सत्यापित करने के बाद, किसी भी नई शाखा (यानी जिसे आप अपने स्थानीय रेपो में चेकआउट करना चाहते हैं) को लाने के लिए इस कमांड को चलाएं जो रिमोट में मौजूद है लेकिन आपके स्थानीय में नहीं है।
» git remote update

Fetching origin
From gitlab.domain.local:ProjectGroupName/ProjectName
 * [new branch]      Feature3    -> Feature3

जैसा कि आप देख सकते हैं कि नई शाखा रिमोट से मंगाई गई है।
3. अंत में, इस कमांड के साथ शाखा की जांच करें

» git checkout -b Feature3 origin/Feature3

Branch Feature3 set up to track remote branch Feature3 from origin.
Switched to a new branch 'Feature3'

यह स्पष्ट रूप से Git बताने के लिए (का उपयोग कर ट्रैक करने के लिए आवश्यक नहीं है --track ) रिमोट के साथ शाखा।

उपरोक्त कमांड स्थानीय शाखा को मूल से दूरस्थ शाखा को ट्रैक करने के लिए सेट करेगी।


4

यदि आपको अपनी शाखा में सफेद स्थान मिला है, तो आपको यह त्रुटि मिलेगी।


1

मेरे लिए मुझे रिमोट जोड़ना होगा:

git remote -add myRemoteName('origin' in your case) remoteGitURL

तब मैं ला सकता था

git fetch myRemoteName

1

इसका कारण यह है कि आपकी स्थानीय शाखा दूरस्थ शाखा को ट्रैक नहीं करती है। जैसा कि ssasi ने कहा, आपको इन आदेशों का उपयोग करने की आवश्यकता है:

git remote update
git fetch
git checkout -b branch_nameA origin/branch_nameB

मैंने अपनी समस्या अभी हल कर ली है…।


0

पहले आपको Fetchरिमोट (विशिष्ट शाखा) की आवश्यकता होती है, फिर आप एक स्थानीय checkoutब्रा बना सकते हैं और इसे उस रिमोट शाखा के साथ ट्रैक कर सकते हैं जो आपके कमांड (यानी -b और - ट्रेक) का उपयोग कर रही है।


0

आपको सबमॉड्यूल डायर जाना चाहिए और चलाना चाहिए git status

आप देख सकते हैं कि बहुत सारी फाइलें हटा दी गईं। आप दौड़ सकते हैं

  1. git reset .

  2. git checkout .

  3. git fetch -p

  4. git rm --cached submodules // सबमॉडल्स आपका नाम है

  5. git submoudle add ....


0

आप इन कमांड का उपयोग कर सकते हैं: git रिमोट अपडेट, git fetch, git चेकआउट -b Branch_nameA मूल: Branch_nameB

मुझे लगता है कि शायद यह आपकी स्थानीय शाखा के कारण दूरस्थ शाखा को ट्रैक नहीं कर सकता है

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