कैसे "हम विलय कर सकते हैं कुछ नहीं" त्रुटि को हल करने के लिए


291

मुझे सिर्फ एक समस्या का सामना करना पड़ा जब एक शाखा को मास्टर में मर्ज करना। सबसे पहले, मुझे शाखा का नाम मिला git ls-remote। चलो उस शाखा को "शाखा-नाम" कहते हैं। मैंने तब git merge branch-nameकमांड चलाया और निम्न परिणाम प्राप्त किया:

fatal: branch-name - not something we can merge

मैं इस त्रुटि को कैसे हल करूं?

जवाबों:


356

जैसा कि दिखाया गया है "कुछ ऐसा नहीं जिसे हम मर्ज कर सकते हैं" उठता है? , यह त्रुटि शाखा के नाम में एक टाइपो से उत्पन्न हो सकती है क्योंकि आप उस शाखा को खींचने की कोशिश कर रहे हैं जो मौजूद नहीं है।

यदि वह समस्या नहीं है (जैसा कि मेरे मामले में है), तो यह संभव है कि आपके पास उस शाखा की स्थानीय प्रति न हो, जिसे आप मर्ज करना चाहते हैं। उन शाखाओं को मर्ज करने के लिए Git को दोनों शाखाओं के स्थानीय ज्ञान की आवश्यकता होती है। आप विलय करने के लिए शाखा की जाँच करके और फिर जिस शाखा में विलय करना चाहते हैं, उस पर वापस जाकर हल कर सकते हैं।

git checkout branch-name
git checkout master
git merge branch-name

यह काम करना चाहिए, लेकिन अगर आपको यह कहते हुए कोई त्रुटि मिलती है

error: pathspec 'remote-name/branch-name' did not match any file(s) known to git.

आपको शाखा की जांच करने से पहले रिमोट (शायद, लेकिन जरूरी नहीं कि "मूल") लाना होगा:

git fetch remote-name

3
एक नया रिमोट जोड़ने के बाद मेरे साथ ऐसा हुआ - मुझे git fetchरिमोट ब्रांच को मर्ज करने से पहले एक काम करने की जरूरत थी ।
जेसन

रिमोट से ब्रांचिंग और चेकआउट करना। git fetch && git checkout BranchName
Juni Brosas

2
यह मेरे साथ तब हुआ जब मैं गलत प्रोजेक्ट में था (यानी यह एक अलग रेपो था, जिसकी ब्रांच मैं मर्ज करना भी नहीं चाहता था)
जोएलफैन

1
यदि आप कमांड लाइन पर एक कांटा सिंक करने की कोशिश कर रहे हैं ( help.github.com/articles/syncing-a-fork ) तो यह त्रुटि शायद इसलिए है क्योंकि आप चरण 0. से चूक गए थे? कोई चरण 0 सूचीबद्ध नहीं है? हां, इसीलिए चूकना आसान है। "इससे पहले कि आप अपने कांटे को एक अपस्ट्रीम रिपॉजिटरी के साथ सिंक कर सकें, आपको एक रिमोट को कॉन्फ़िगर करना होगा जो Git में अपस्ट्रीम रिपॉजिटरी को इंगित करता है।" <- वह चरण है 0. यदि आप उस चरण को छोड़ते हैं, तो आपको उपरोक्त त्रुटि मिलती है, जिसे आपने संभवतः Google में डाल दिया है, जिससे आप यहां पहुंच गए हैं। :-)
स्टीव बॉन्ड्स

1
Git requires local knowledge of both branches in order to merge those branches
गंगाधर जन्नू

96

यह एक मूर्खतापूर्ण सुझाव है, लेकिन यह सुनिश्चित करें कि शाखा के नाम में कोई टाइपो नहीं है!


4
इतना मूर्खतापूर्ण नहीं, जैसा कि "टाइपो" इस तथ्य को कम कर सकता है कि शाखा को अभी तक (और स्थानीय रूप से अज्ञात नहीं) लाया गया है .. गिट सीवीएस या एसवीएन की तुलना में चीजों को अलग तरह से करता है ..
क्लेंग

2
यदि शाखा नाम में अल्पविराम (,) या एपॉस्ट्रॉफ़ (') जैसे अक्षर हैं तो समस्या भी हो सकती है।
एक्सफेक्ट

यह भी सुनिश्चित करें कि आप सही रेपो या टर्मिनल विंडो / टैब में हैं, खासकर यदि आप एक साथ कई रिपोज पर काम करते हैं।
13 सितंबर

71

जब एक दूरदराज से ऊपर की ओर खींचता है, git fetch --allतो मेरे लिए चाल चली गई:

git remote add upstream [url to the original repo]
git checkout [branch to be updated]
git fetch --all
git merge upstream/[branch to be updated]

अन्य मामलों में, मैंने पाया कि "कुछ ऐसा नहीं जिसे हम मर्ज कर सकते हैं" त्रुटि भी होगी यदि रिमोट (मूल, अपस्ट्रीम) शाखा मौजूद नहीं है। यह स्पष्ट लग सकता है, लेकिन आप अपने आप git merge origin/developको एक रेपो पर कर सकते हैं जो केवल है master


5
मैं गंभीरता से नहीं जानता कि इस उत्तर ने उतने वोट क्यों नहीं बटोरे जितने कि ऊपर वाले ने बताए हैं। 'git fetch -all' वह कमांड है जो किसी दूरस्थ शाखा को मर्ज करने से पहले चलाने के लिए आमतौर पर छूट जाती है और इससे मेरे लिए समस्या हल हो जाती है।
दयानंद गौड़ा

2
क्योंकि लाने से स्वचालित रूप से खींच नहीं होता है और आपको इसे मैन्युअल रूप से करना होगा। तो एक जोड़ी लाने के लिए --all और pull --all चाल करेंगे।
danielpopa

धन्यवाद! git remote add upstreamमहत्वपूर्ण बात यह है कि मैं याद आ रही थी कि यह मेरे लिए हल किया गया था। मुझे लगता है कि एक सामान्य गलती यह मानती है कि एक कांटा अपने आप पता चल जाता है कि यह कहाँ से निकाला गया था।
ब्रेंट

23

मेरे पास भी यह मुद्दा था। शाखा 'उपयोगकर्ता नाम / मास्टर' की तरह दिखती थी जो मुझे भ्रमित करने वाले रिमोट पते की तरह दिखती थी। मेरे लिए यह प्रयोग करना

git merge origin/username/master

पूरी तरह से ठीक काम किया।


4
मुझे origin/रिमोट ब्रांच के नाम के आगे भी लगाना पड़ा ।
AsGoodAsItGets

आपको यह करना होगा यदि शाखा के नाम में एक आगे स्लैश /है।
CTS_AE

21

नीचे दी गई विधि हर बार मेरे लिए काम करती है।

git checkout master
git pull
git checkout branch-name-to-be-merged
git pull
git checkout branch-name
git pull
git merge branch-name-to-be-merged

इसने मेरे लिए धन्यवाद का काम किया। मैं यह अनिवार्य रूप से सही समाधान है: मूल रूप से सुनिश्चित करें कि आपके पास स्रोत शाखा की जाँच करने से पहले इसे मर्ज करने की कोशिश कर रहा है।
dps

11

ऐसा हो सकता है क्योंकि वह शाखा आपके स्थानीय पर नहीं है। उपयोग विलय से पहले

git fetch origin

7

आपको यह त्रुटि इसलिए मिल रही है क्योंकि जिस शाखा को आप मर्ज करना चाहते हैं वह आपके स्थानीय भंडार पर मौजूद नहीं है।

तो, पहले उस ब्रैक को चेक करें जिसे आप निम्नलिखित कमांड द्वारा मास्टर ब्रांच में मर्ज करना चाहते हैं:

git checkout branch_name_to_merge

इसके बाद निम्नलिखित कमांड द्वारा इसे मास्टर शाखा के साथ मिलाने का प्रयास करें:

git merge branch_name_to_merge

2
यह तब भी हो सकता है यदि आप अपनी शाखा के नाम पर ध्यान नहीं दे रहे हैं (यानी गलत वर्तनी) :)
मैट बोरजा

इसने मेरे लिए काम किया। जब मैं एटम में Git टैब के साथ काम कर रहा हूं और मैं शाखाओं को ड्रॉप डाउन के साथ स्विच करता हूं, तो कभी-कभी मुझे कमांड लाइन और checkoutब्रांच में जाना
पड़ता है

7

यह त्रुटि बताती है कि वह शाखा जहाँ से आप परिवर्तन करना चाहते हैं (यानी आपके मामले में शाखा-नाम) आपके पास मौजूद नहीं है, इसलिए आपको शाखा की जाँच करनी चाहिए और स्थानीय परिवर्तन लाने चाहिए। अपनी मास्टर ब्रांच में चेकआउट करें और फिर नीचे दिए गए चरणों का पालन करें:

git checkout branch-name
git pull
git checkout new-branch-name
git merge branch-name

मैं picky होगा और कहूंगा कि मुझे नहीं लगता कि त्रुटि संदेश ऊपर दिए गए कुछ भी सुझाव देता है :-)
ब्रायन एग्न्यू

7

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

$ git merge fix-load

इसके लिए निम्न त्रुटि संदेश मिला:

मर्ज: फिक्स-लोड - ऐसा कुछ नहीं जो हम मर्ज कर सकते हैं

मैंने सभी समाधानों से ऊपर देखा, लेकिन काम नहीं किया।

अंत में, मुझे एहसास हुआ कि समस्या का कारण मेरी शाखा के नाम (वास्तव में, मर्ज की शाखा का नाम fix-loads) पर एक वर्तनी की गलती है ।


4
मेरे लिए, उत्पत्ति को जोड़ने का काम किया। अपना उदाहरण लेते हुए git merge origin/fix-loadsकाम किया।
राम पत्र

3

मुझे यह त्रुटि तब हुई जब मैंने किया git merge BRANCH_NAME "some commit message"- मैं प्रतिबद्ध संदेश के लिए -m ध्वज जोड़ना भूल गया, इसलिए यह सोचा कि शाखा नाम में टिप्पणी शामिल है।


3

मेरी राय में मैं दूरस्थ रेपो के साथ अपनी स्थानीय शाखा का नक्शा बनाने से चूक गया था। मैंने नीचे किया और यह ठीक काम किया।

git checkout master
git remote add origin https://github.com/yourrepo/project.git
git push -u origin master
git pull
git merge myBranch1FromMain

2

यदि संदर्भ वाला स्ट्रिंग किसी अन्य गिट कमांड (या उस मामले के लिए कोई अन्य शेल कमांड) द्वारा निर्मित होता है, तो सुनिश्चित करें कि इसमें अंत में वापसी गाड़ी नहीं है। आपको "गेट मर्ज" स्ट्रिंग को पास करने से पहले इसे पट्टी करना होगा।

ध्यान दें कि ऐसा होने पर यह बहुत स्पष्ट है, क्योंकि 2 लाइनों पर त्रुटि संदेश:

merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
 - not something we can merge

3
कृपया एक टिप्पणी प्रदान करें जब आपने एक उत्तर दिया हो। शायद यह मूल पोस्टर का मुद्दा नहीं था, लेकिन यह त्रुटि संदेश का एक संभावित कारण है (मुझे स्वयं समस्या थी)।
ओक्रूकेट

2

हमें यह त्रुटि मिली क्योंकि हमारे पास शाखा नाम में एक अल्पविराम (,) था। हमने स्थानीय शाखा को हटा दिया, फिर इसे नए नाम के तहत अल्पविराम के बिना फिर से जांचा। हम इसे सफलतापूर्वक विलय करने में सक्षम थे।


अंडरस्कोर भी समस्याग्रस्त लगता है। +1
एंडर्स लिंडन

1
मैं अक्सर शाखा के नाम @ AndersLindén
nzaleski

और कोष्ठक भी समस्याग्रस्त था ... + 1
पाब्लो एज़ेक्विएल

1

पोस्टरिटी के लिए: जैसे Axeffffect ने कहा ... यदि आपके पास यह देखने के लिए कोई टाइपोस चेक नहीं है कि क्या आपके स्थानीय शाखा के नाम में हास्यास्पद चरित्र हैं, जैसे कॉमा या एपोस्ट्रोफ। बिल्कुल वही जो अभी मेरे साथ हुआ है।


या अंडरस्कोर। +1
एंडर्स लिंडन

1

मेरा सुझाव है कि यदि आप उस शाखा में स्विच करने में सक्षम हैं जिसे आप विलय करने की कोशिश कर रहे हैं।

मुझे यह त्रुटि तब भी मिली जब मैं जिस शाखा में विलय करना चाहता था वह स्थानीय रिपॉजिटरी में थी और वर्तनी की त्रुटियां नहीं थीं।

मैंने अपने स्थानीय परिवर्तनों को अनदेखा कर दिया ताकि मैं शाखा में जा सकूं (स्टाश या कमिट को भी प्राथमिकता दी जा सकती है)। इसके बाद मैंने प्रारंभिक शाखा में वापस स्विच किया, और मर्ज सफल रहा।


0

मेरे लिए यह समस्या तब आई जब मैंने यह कोशिश की:

git merge -s ours --no-commit --allow-unrelated-histories <remote name>/develop

इसलिए वास्तव में मुझे masterइसके बजाय developलिखना चाहिए था, क्योंकि मास्टर सबट्री का शाखा नाम था, न कि मेरी वास्तविक शाखा।


0

यह अजीब लग सकता है, लेकिन अपने git ईमेल और नाम को सेटअप करना याद रखें:

git config --global user.email "MY@EMAIL.COM"
git config --global user.name "FIRST_NAME LAST_NAME"

0

मेरे लिए, समस्या विलय संदेश में 'दोहरे उद्धरण चिह्नों' की थी। इसलिए जब मैंने डबल मार्क को हटाया, तो सभी ने जादुई तरीके से काम किया। मैं किसी की मदद करने की उम्मीद करता हूं। (मेरी खराब अंग्रेजी के लिए माफी चाहूंगा)


0

मेरे पास मास्टर के साथ एक कार्य वृक्ष था और दो अलग-अलग कार्य फ़ोल्डर में एक और शाखा की जाँच की गई थी।

PS C:\rhipheusADO\Build> git worktree list
C:/rhipheusADO/Build         7d32e6e [vyas-cr-core]
C:/rhipheusADO/Build-master  91d418c [master]

PS C:\rhipheusADO\Build> cd ..\Build-master\

PS C:\rhipheusADO\Build-master> git merge 7d32e6e #Or any other intermediary commits
Updating 91d418c..7d32e6e
Fast-forward
 Pipeline/CR-MultiPool/azure-pipelines-auc.yml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

PS C:\rhipheusADO\Build-master> git ls-remote
From https://myorg.visualstudio.com/HelloWorldApp/_git/Build
53060bac18f9d4e7c619e5170c436e6049b63f25        HEAD
7d32e6ec76d5a5271caebc2555d5a3a84b703954        refs/heads/vyas-cr-core 

PS C:\rhipheusADO\Build-master> git merge 7d32e6ec76d5a5271caebc2555d5a3a84b703954
Already up-to-date

PS C:\rhipheusADO\Build>  git push
Total 0 (delta 0), reused 0 (delta 0)
To https://myorg.visualstudio.com/HelloWorldApp/_git/Build
   91d418c..7d32e6e  master -> master

यदि आपको केवल नवीनतम प्रतिबद्ध को मर्ज करने की आवश्यकता है:

git merge origin/vyas-cr-core 
git push

और जैसा मैंने हमेशा किया है वैसा ही है:

git checkout master # This is needed if you're not using worktrees
git pull origin vyas-cr-core
git push

0

जिस शाखा को आप मिलाने का प्रयास कर रहे हैं, वह आपके द्वारा वर्तमान में मौजूद नहीं होने के कारण पहचानी नहीं जा सकती है, इसलिए git branch देखें कि क्या आप जिस शाखा में विलय करना चाहते हैं, वह मौजूद नहीं है, यदि नहीं तो प्रदर्शन करें git pull और अब यदि आप करते हैं git branch, तो शाखा अब दिखाई देगी, और अब आप प्रदर्शन करते हैंgit merge <BranchName>

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