गेट चेकआउट: स्विचिंग शाखाओं के साथ अद्यतन पथ असंगत है


467

मेरी समस्या शाखा स्विचिंग के दौरान घातक गेट त्रुटि से संबंधित है ।

मैं कमांड के साथ एक दूरस्थ शाखा लाने की कोशिश करता हूं

git checkout -b local-name origin/remote-name

लेकिन मुझे यह त्रुटि संदेश मिला:

घातक: git चेकआउट: अपडेटिंग पथ स्विचिंग शाखाओं के साथ असंगत है।
क्या आपने 'मूल / दूरस्थ-नाम' को चेकआउट करने का इरादा किया था जिसे कमिट नहीं किया जा सकता है?

यदि मैं मैन्युअल रूप से एक शाखा बनाता हूं और फिर दूरस्थ शाखा को खींचता हूं, तो यह काम करता है, जैसे कि एक नया क्लोन बनाना और शाखा की जांच करना।

मैं जिस रिपॉजिटरी पर काम करता हूं, उसके साथ काम क्यों नहीं करता है?


1
उस आदेश के पहले उदाहरण (त्रुटि संदेश को ट्रिगर करने) के बाद क्या बदल गया है?
वॉन

//blabla.com/dir1/Project.git: Git init Git Git Git लाने लाने

जवाबों:


739

मेरा मानना ​​है कि यह तब होता है जब आप एक दूरस्थ शाखा की जांच करने की कोशिश कर रहे होते हैं जो आपके स्थानीय गिट रेपो के बारे में अभी तक पता नहीं है। प्रयत्न:

git remote show origin

यदि आप जिस दूरस्थ शाखा की जांच करना चाहते हैं, वह "नई दूरस्थ शाखाओं" के अंतर्गत है और "ट्रैक की गई सुदूर शाखाओं" के लिए नहीं है, तो आपको उन्हें लाने की आवश्यकता है:

git remote update
git fetch

अब यह काम करना चाहिए:

git checkout -b local-name origin/remote-name

7
इससे मेरे लिए समस्या हल हो गई, न कि उपरोक्त मनमाने उत्तर के लिए।
जेसडेक

21
उस रिपॉजिटरी की सभी शाखाओं को प्राप्त करने के लिए "git fet REPOSITORY_NAME" होना चाहिए।
माइक थॉमसन

1
जरुरी नहीं। git fetchसभी शाखाओं के सभी दूरस्थ रिपोज से प्राप्त करेंगे।
माइकल ग्रिनिच

4
मामले में किसी और को इस सब के अत्यधिक पागलपन से जूझना पड़ता है: git लाने का मूल / branchname git लाने के समान नहीं है। पूर्व बस परिणाम में "नया (अगला भ्रूण रीमोट / उत्पत्ति में संग्रहीत करेगा)" गिट रिमोट शो मूल के माध्यम से दिखाई देने वाले कॉलम में प्रदर्शित होता है।
अलेक्जेंडर केलेट ०

7
यदि आप ऐसा रिमोट के लिए करने का प्रयास कर रहे हैं जिसे आपने स्पष्ट रूप से जोड़ा है (इसलिए उत्पत्ति के अलावा कुछ भी ) तो आपको git remote updateउस रिमोट को लाने से पहले करने की आवश्यकता होगी। अन्यथा आपको संदेश मिलते हैं जैसे Did you intend to checkout 'upstream-repo/master' which can not be resolved as commit?कृपया इसे उत्तर में जोड़ें और लोगों को उसी उत्तर को पढ़ने के लायक घंटे बचाएं जो केवल मूल के लिए काम करते हैं।
ब्रूनो ब्रोंस्की

150

वैकल्पिक वाक्यविन्यास,

git fetch origin remote_branch_name:local_branch_name

12
इसने मेरे लिए काम किया। मेरी दूरस्थ शाखा का नाम मूल नहीं है। मुझे नहीं पता कि इससे कोई फर्क पड़ता है क्योंकि मैं वोदका पी रहा हूं।
रिमीयन

13
यह सिर्फ एक वैकल्पिक वाक्यविन्यास नहीं है, लेकिन जब चेक चेक-बी शाखा_नाम की उत्पत्ति / शाखा_नाम काम नहीं करता है तो काम कर सकता है
कोडरकेक

1
यह भी "जिट चेकआउट - ट्रैक मूल / रिमोट-शाखा" को चलाने के दौरान मेरी समस्या तय हो गई, जो मूल रूप से ओपी के ठीक होने से पहले एक ही त्रुटि थी। धन्यवाद!
काक्यो

1
मान्य उत्तर को चलाने के बाद मेरे लिए काम किया।
AsTeR

2
हां, मुझे संदेह है --depthकि मूल क्लोन के लिए क्वालीफायर यहां गलती पर हो सकता है। मुझे सफलता मिली git fetch remote_branch_name:local_branch_nameलेकिन अन्य सभी सलाह विफल रही।
जॉन केलर

46

सफलता के बिना इस सूत्र में जो कुछ भी मैं पढ़ सकता था, उसका अधिकांश प्रयास करने के बाद, मैं इस एक के पार हो गया: दूरस्थ शाखा "git Branch -r" में दिखाई नहीं दे रही है

यह पता चला कि मेरी .it / config फ़ाइल गलत थी। एक साधारण फिक्स करने के बाद सभी शाखाओं को दिखाया गया।

से जा रहे हैं

[remote "origin"]
    url = http://stash.server.com/scm/EX/project.git
    fetch = +refs/heads/master:refs/remotes/origin/master

सेवा

[remote "origin"]
    url = http://stash.server.com/scm/EX/project.git
    fetch = +refs/heads/*:refs/remotes/origin/*

की चाल चली


4
यह वास्तव में एक अजीब विन्यास है। यह बताता है कि रिमोट से केवल मास्टर शाखा लाने के लिए गिट।
इक्के

3
अगर मैं कर सकता तो मैं इसे 10 बार वोट देता! - यह कुछ ऐसा लगता है कि क्लोनिंग करते समय नया काम करता है
एमपीपीस

2
मुझे भी यही समस्या थी, यह मुझे पागल कर रहा था। किसी को भी दूरस्थ शाखाएं नहीं दिख रही हैं, कृपया इसे देखें !!
कार्लोस ग्रानडोस

आपके उत्तर के लिए भगवान का शुक्र है :)
सच्चा

मन = उड़ गया! धन्यवाद!
चिरंजीब

12

सुनिश्चित नहीं हैं कि अगर यह सहायक या वास्तव में अपने प्रश्न के लिए प्रासंगिक है, लेकिन अगर आप लाने और चेकआउट करने के लिए केवल एक कोशिश कर रहे हैं एक दूरस्थ रिपोजिटरी से शाखा, उसके बाद निम्न Git आदेशों चाल करना होगा:

url= << URL TO REPOSITORY >>
branch= << BRANCH NAME >>

git init
git remote add origin $url
git fetch origin $branch:origin/$branch
git checkout -b $branch --track origin/$branch

11

उपरोक्त में से कोई भी मेरे लिए काम नहीं किया। मेरी स्थिति थोड़ी अलग है, मेरी दूरस्थ शाखा मूल में नहीं है । लेकिन एक अलग भंडार में।

git remote add remoterepo GIT_URL.git
git fetch remoterepo
git checkout -b branchname remoterepo/branchname

टिप: यदि आपको निम्न आउटपुट में दूरस्थ शाखा दिखाई git branch -v -aनहीं देती है तो इसे जांचने का कोई तरीका नहीं है।

1.7.5.4 पर काम करने की पुष्टि की


arf, बस एहसास VirtualStaticVoid एक ही समाधान था!
ओलिवियर रिफलो

+1 के लिए git branch -v -a: मेरे पास एक गलत तरीके से कॉन्फ़िगर किया गया रिमोट था जिसने कहा कि fetch = +refs/heads/*:refs/remotes/master/*भले ही रिमोट कहा जाता है upstream
केफ्लेविच

7

मेरे लिए क्या काम था:

git fetch

जो रिमोट पर सभी शाखाओं के लिए आपकी मशीन के सभी रेफरी को नीचे खींचता है। तब मैं कर सकता था

git checkout <branchname>

और वह पूरी तरह से काम किया। शीर्ष मतदान जवाब के समान, लेकिन थोड़ा और अधिक सरल।


4

मुझे संदेह है कि दूरस्थ-नाम की कोई दूरस्थ शाखा नहीं है, लेकिन आपने अनजाने में मूल / दूरस्थ-नाम से एक स्थानीय शाखा बनाई है।

क्या यह संभव है कि आप किसी बिंदु पर टाइप करें:

git शाखा का मूल / दूरस्थ नाम

इस प्रकार मूल / रिमोट-नाम की एक स्थानीय शाखा का निर्माण? यह कमांड टाइप करें:

git चेकआउट मूल / रिमोट-नाम

आप या तो देखेंगे:

"मूल / दूरस्थ-नाम" शाखा में स्विच किया गया

जिसका अर्थ है कि यह वास्तव में एक गलत नाम वाली स्थानीय शाखा है, या

नोट: "मूल / rework-isscoring" जो एक स्थानीय शाखा नहीं है के लिए आगे बढ़ रहा है
यदि आप इस चेकआउट से एक नई शाखा बनाना चाहते हैं, तो आप ऐसा कर सकते हैं
(अभी या बाद में) फिर से चेकआउट कमांड के साथ -b का उपयोग करके। उदाहरण:
  git checkout -b 

जिसका अर्थ है कि यह वास्तव में एक दूरस्थ शाखा है।


3

यह बहुत सहज नहीं है, लेकिन यह मेरे लिए अच्छा काम करता है ...

  mkdir remote.git & cd remote.git & git init
  git remote add origin $REPO
  git fetch origin $BRANCH:refs/remotes/origin/$BRANCH        

Git शाखा चलाएं - ट्रैक कमांड ...

  git branch --track $BRANCH origin/$BRANCH

2

मेरे लिए मेरे पास एक टाइपो था और मेरी दूरस्थ शाखा मौजूद नहीं थी

git branch -aदूरस्थ शाखाओं को सूचीबद्ध करने के लिए उपयोग करें


1

क्या आपका मुद्दा इस अन्य SO प्रश्न "चेकआउट समस्या" से जुड़ा हो सकता है ?

यानी: एक समस्या से संबंधित:

  • Git का पुराना संस्करण
  • एक जिज्ञासु चेकआउट सिंटैक्स, जो होना चाहिए: नई शाखा शुरू करने के लिए एक कमिट के नाम का जिक्र करने के git checkout -b [<new_branch>] [<start_point>]साथ [<start_point>], और 'origin/remote-name'वह नहीं है।
    (जबकि git branchएक start_point एक दूरस्थ शाखा का नाम है) का समर्थन करता है

नोट: चेकआउट.श लिपी क्या कहती है:

  if test '' != "$newbranch$force$merge"
  then
    die "git checkout: updating paths is incompatible with switching branches/forcing$hint"
  fi

यह वाक्यविन्यास git चेकआउट की तरह है -b [] [Remote_branch_name] दोनों शाखा का नाम बदलकर नई शाखा के नए शुरुआती बिंदु को रीसेट कर रहे थे, जिसे असंगत समझा जाता है।


समस्या सुलझ गई है। git checkout -b स्थानीय-नाम रिमोट / रिमोट-ब्रांच वास्तव में काम करता है
Ikke

1
दिलचस्प है, उस आदेश के पहले उदाहरण के बाद से क्या बदल गया है (त्रुटि संदेश को ट्रिगर करना)?
वॉन

1

एक ज़िलियन बार लाने के बाद भी जोड़ा गया रिमूव नहीं दिखा, हालांकि पूल में बूँदें थीं। जो भी कारण के लिए --tags विकल्प दिया जाता है, उसे चालू किया जाता है git remote add। आप मैन्युअल रूप से इसे .it / config से हटा सकते हैं।

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