जब दूरस्थ गिट शाखा को हटाना "त्रुटि: अयोग्य गंतव्य को धकेलने में असमर्थ"


139

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

git push origin :my_remote_branch

और हो रही है:

error: unable to push to unqualified destination: my_remote_branch
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.
error: failed to push some refs to 'git@example.com:/myrepo'

ये मेरी वर्तमान शाखाएँ हैं

git branch -a
* develop
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/my_remote_branch

git branch -r --merged
  origin/HEAD -> origin/master
  origin/develop
  origin/master

मैं इस शाखा से कैसे छुटकारा पा सकता हूं, इस पर कोई विचार।


क्या आपने git fetchयह देखने की कोशिश की कि क्या यह गैर-मौजूदा रिमोट नाम तय करता है? क्या आपने अपने में जाने .git\refs\remotes\originऔर my_remote_branchफ़ाइल को हटाने की कोशिश की , यह देखने के लिए कि क्या यह पर्याप्त है?
वॉनच

किया git fetchलेकिन मदद नहीं की। फ़ाइल को मैन्युअल रूप से हटाने की कोशिश करने से पहले अधिक सीधे आगे के समाधान की खोज करने की कोशिश करेंगे।
ह्यूगो

उस फ़ाइल को हटाने या कम से कम स्थानांतरित करने का प्रयास करें: इसमें केवल उस शाखा के सिरे का SHA1 होता है।
वॉनच

45
आपको git fetch -pबासी ट्रैकिंग शाखाओं से छुटकारा पाने के लिए करना चाहिए ।
Jan Hudec

जवाबों:


270

refs/remotes/origin/my_remote_branchआपके स्थानीय भंडार में मौजूद तथ्य दूरस्थ रिपॉजिटरी refs/heads/my_remote_branchमें मौजूद नहीं है origin

यदि यह पहले से ही मूल में हटा दिया गया है, तो इसे दूर git fetch -p originकरने के लिए करें refs/remotes/origin/my_remote_branch-pविकल्प है कि अब और नहीं इसी रिमोट में मौजूद किसी भी ट्रैकिंग शाखाओं को हटाने के लिए लाने के लिए कहता है; डिफ़ॉल्ट रूप से उन्हें आसपास रखा जाता है।


12
git fetch -p originयह मेरे लिए तय है। बहुत बहुत धन्यवाद।
10

1
आपका जवाब कमाल का है। संक्षिप्त और सार के बारे में!
1

छंटाई से मदद नहीं मिली! जबकि git push origin --delete origin/feature/xमुझे गैर-अस्तित्व रेफरी के बारे में त्रुटि दी git push origin :feature/xगई शाखा को हटा दिया। इसलिए मुझे लगता git push origin --delete <branchName>है कि शाखा में मूल को शामिल नहीं किया जाना चाहिए (?) लेकिन यह बाश पूरा हुआ जो भ्रामक है।
१६'१६ को ०६:५०

@ डैडी, आप मूल पूछने वाले से अलग स्थिति में थे। मूल प्रश्न में, समस्या यह है कि दूरस्थ शाखा को पहले से ही हटा दिया गया था , संभवत: किसी और ने, इसलिए केवल स्थानीय को सिंक करना पड़ा। जबकि आप रिमोट को डिलीट कर रहे हैं। दरअसल, आदेश होना चाहिए git push origin --delete feature/x, क्योंकि आप शाखा का नाम दे रहे हैं मूल में है, और यह करता है नहीं देखते कि उपसर्ग (दो रूपों अन्यथा पर्याय वैसे भी कर रहे हैं)।
Jan Hudec

@ जानहुडेक समझ में आता है। बैश पूरा होशियार है जब :शामिल करने के लिए उपयोग नहीं करता है, originलेकिन यह वेरिएंट का उपयोग करते समय origin/branch_nameबस के बजाय पूरा करता है । branch_name--delete
डैशी

56

पुराने दूरस्थ गिट शाखाओं की सफाई का प्रश्न मिला और इसने यह चाल चली

git branch -r -d origin/my_remote_branch

मैं अब लगभग एक घंटे के लिए बिल्कुल ऐसा करने की कोशिश कर रहा हूं, बहुत बहुत धन्यवाद!
sebkkom

इससे दूरस्थ शाखा नष्ट नहीं होती है। यदि आप एक git लाने जाते हैं तो आप फिर से शाखा देखेंगे। यह सिर्फ दूरस्थ शाखा की आपकी स्थानीय सूची से इसे हटा देता है।
पैट्रिक डेसजार्डिन्स 15

2
@PatrickDesjardins git push origin :my_remote_branchरिमोट से शाखा को git branch -r -d origin/my_remote_branchहटा देता है और इसे दूरस्थ शाखाओं की मेरी स्थानीय सूची से हटा देता है
ह्यूगो

11

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

git remote prune origin

4

रिमोट ब्रांच को जबरन हटाने के लिए दो विकल्पों का पालन करें

विकल्प 1

get push origin --delete <branchName>

विकल्प 2

git fetch -p origin
git branch -r -d origin/<branchName>

3
git branch -r -d origin/my_remote_branch

मेरे लिए पर्याप्त नहीं था। इससे पहले कि मैं सर्वर पर जाऊं और शाखा को हटाने के लिए सीधे गिट निर्देशिका के साथ काम करूं (जो खतरनाक और बदसूरत है):

ssh mygitserver
su - git
cd /home/git/repositories/my_remote_branch.git/
git  --git-dir=. --work-tree=/tmp/ branch -D my_remote_branch

यह सिर्फ खतरनाक और बदसूरत नहीं है, यह गलत भी है । एक बात के लिए, यह सवाल शाखा को स्थानीय रूप से हटाने के बारे में है जब इसे रिमोट पर हटा दिया गया है। और दूसरे के लिए, रिमोट से एक शाखा को हटाना केवल एक मामला है git push origin :my_remote_branch। कोलन को माइंड करें।
Jan Hudec

आप सही जन हैं, git push origin :my_remote_branchयह सामान्य तरीका है। यह बदसूरत और खतरनाक तरीका है जब यह काम नहीं करता है (जैसे गलत धारणा के कारण)।
पाविक ​​p

1

मुझे भी ऐसी ही समस्या है। पहली बार इस चर्चा में गया था, हालाँकि मैं इस समस्या को हल नहीं कर सका जब तक कि मैंने https://stackoverflow.com/a/32147743/4209849 नहीं देखा ।

जो बस भेद पर एक टिप जोड़ें origin/my-branch-nameऔर my-branch-name

विशिष्ट होने के लिए, मुझे उपयोग करना चाहिए:

git push origin :my_remote_branch

के बजाय

git push origin :origin/my_remote_branch

इससे मेरी समस्या कम से कम हल हो गई, आशा है कि इससे दूसरों को भी मदद मिलेगी।


1

मेरे लिए समस्या यह थी, कि जीथब पर यह मेरी डिफ़ॉल्ट शाखा थी। मैंने डिफ़ॉल्ट शाखा बदल दी, फिर डिलीट ऑपरेशन सफल रहा।

आशा है कि यह किसी की मदद करता है


0

यह एक ही मुद्दा था, मैं मैन्युअल रूप ./.git/configसे शामिल करने के लिए अपनी फ़ाइल संपादित :

[branch "branchName"]
remote = origin
merge = refs/heads/branchName

जिसके परिणामस्वरूप: error: src refspec branchName matches more than one.यह मैंने दौड़कर तय किया $git tag -d branchName। जिसके बाद मैं नई शाखा को ऊपर की ओर धकेलने में सक्षम हुआ।


0

इसने मेरे लिए काम किया: मैंने दूरस्थ शाखा को github UI पर बनाया और फिर अपनी स्थानीय शाखा को धक्का दिया, जिसका नाम भी यही था। अन्य तरीकों से काम न करें। अन्य तरीका स्थानीय स्तर पर एक नई शाखा बनाना और एक खाली शाखा को आगे बढ़ाना और बाद में अपनी प्रतिबद्धता को स्वीकार करना और फिर से अपने रिमोट पर धकेलना होगा।

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