দূরবর্তী গিট শাখাটি মোছার সময় "ত্রুটি: অযোগ্য গন্তব্যে ঠেলে দিতে অক্ষম"


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

আমি কীভাবে এই শাখা থেকে মুক্তি পেতে পারি সে সম্পর্কে কোনও ধারণা প্রশংসিত হবে be


আপনি কি git fetchএটি দেখার চেষ্টা করেছিলেন যে এটি যে অ-বিদ্যমান রিমোট নামটি স্থির করে? আপনি কি নিজের মধ্যে .git\refs\remotes\originগিয়ে my_remote_branchফাইলটি মুছে ফেলার চেষ্টা করেছেন , এটি যথেষ্ট কিনা তা দেখার জন্য?
ভনসি

না git fetchকিন্তু তাতে কোন লাভ হয়নি। ম্যানুয়ালি ফাইল মোছার চেষ্টা করার আগে আরও সোজা ফরোয়ার্ড সমাধান অনুসন্ধান করার চেষ্টা করবে।
হুগো

মুছে ফেলার চেষ্টা করুন বা কমপক্ষে সেই ফাইলটি সরান: এতে that শাখার ডগায় কেবলমাত্র SHA1 রয়েছে।
ভনসি

45
git fetch -pবাসি ট্র্যাকিং শাখা থেকে পরিত্রাণ পেতে আপনাকে অবশ্যই করতে হবে ।
জান হুডেক

উত্তর:


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এটা আমার জন্য স্থির কর অনেক ধন্যবাদ.
রেডিম্প

1
আপনার উত্তর দুর্দান্ত। সংক্ষিপ্ত এবং সারাংশ সম্পর্কে!
1nstinct

ছাঁটাই সাহায্য করেনি! যখন git push origin --delete origin/feature/xআমাকে অ অস্তিত্ব সুত্র সম্পর্কে ত্রুটি দিলেন git push origin :feature/xশাখা মুছতে করেনি। সুতরাং আমার ধারণা git push origin --delete <branchName>ব্রাঞ্চনামে (?) উত্সটি অন্তর্ভুক্ত করা উচিত নয় তবে এটি বাশ-সমাপ্ত যা বিভ্রান্তিকর।
ড্যাশসি

@ ড্যাশসি, আপনি প্রকৃত প্রশ্নকর্তার চেয়ে আলাদা পরিস্থিতিতে ছিলেন। মূল প্রশ্নে, সমস্যাটি হ'ল দূরবর্তী শাখাটি ইতিমধ্যে মুছে ফেলা হয়েছিল সম্ভবত অন্য কারও দ্বারা, তাই কেবল স্থানীয়কে সিঙ্ক করতে হয়েছিল। আপনি যখন রিমোটটি মুছছেন তখন। বস্তুত, কমান্ড হওয়া উচিত git push origin --delete feature/x, কারণ আপনি শাখার নাম দিচ্ছেন মূলবিন্দুতে , এবং এটি নেই না সেখানে সেই প্রেফিক্স আছে (দুই ফর্ম অন্যথায় সমার্থক যাহাই হউক না কেন আছে)।
জানু হুডেক

পছন্দ করেছেন :অন্তর্ভুক্ত না করার জন্য ব্যাশ সম্পূর্ণ হ'ল স্মার্ট তবে ভেরিয়েন্টটি ব্যবহার করার সময় কেবল originএটির origin/branch_nameপরিবর্তে এটি সম্পূর্ণ হয় । branch_name--delete
ড্যাশসি

56

পুরানো দূরবর্তী গিট শাখা পরিষ্কার করার প্রশ্ন পেয়েছে এবং এটি কৌশলটি করেছে

git branch -r -d origin/my_remote_branch

আমি এখন প্রায় এক ঘন্টা ধরে ঠিক এটি করার চেষ্টা করছি, অনেক অনেক ধন্যবাদ!
sebkkom

এটি দূরবর্তী শাখা মুছবে না। আপনি গিট আনতে গেলে আবার শাখাটি দেখতে পাবেন। এটি কেবলমাত্র স্থানীয় দূরবর্তী শাখার তালিকা থেকে এটি সরিয়ে দেয়।
প্যাট্রিক দেশজার্ডিনস

2
@ পেট্রিকডিজার্ডিনস একেবারে git push origin :my_remote_branchদূর থেকে শাখাটি মুছে ফেলে এবং git branch -r -d origin/my_remote_branchএটি স্থানীয় দূরবর্তী শাখাগুলির তালিকা থেকে সরিয়ে দেয়
হুগো

11

ইতিমধ্যে মুছে ফেলা একটি দূরবর্তী শাখা মুছে ফেলার চেষ্টা করার সময় আমি এটি পেরিয়ে এসেছি। যা দরকার ছিল তা ছিল ছাঁটাই:

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। কোলন মাইন্ড।
জান হুডেক

তুমি ঠিক জান, git push origin :my_remote_branchএটাই স্বাভাবিক উপায়। এই কুরুচিপূর্ণ এবং বিপজ্জনক উপায়টি যখন এটি কাজ করে না (যেমন: ভুল কনফিগার্ড গিটের কারণে)।
পেভিক

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

আমার জন্য সমস্যা ছিল, এটি গিথুব এ আমার ডিফল্ট শাখা ছিল। আমি ডিফল্ট শাখা পরিবর্তন করেছি, তারপরে মুছুন অপারেশন সফল হয়েছিল।

আশা করি এটি কারও সাহায্য করবে helps


0

এই একই সমস্যা ছিল, আমি ম্যানুয়ালি আমার ./.git/configফাইল সম্পাদনা করতে অন্তর্ভুক্ত:

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

যার ফলস্বরূপ: error: src refspec branchName matches more than one.এটি আমি চালিয়ে স্থির করেছি $git tag -d branchName। যার পরে আমি নতুন শাখাটি উজানের দিকে ধাক্কা দিতে সক্ষম হয়েছি।


0

এটি আমার পক্ষে কাজ করেছে: আমি গিথুব ইউআইতে রিমোট শাখা তৈরি করেছি এবং তার পরে আমার স্থানীয় শাখাটিকে এটির নাম দিয়েছি it অন্যান্য উপায়ে কাজ না করার ক্ষেত্রে এটি ব্যবহার করে দেখুন। অন্য উপায়ে স্থানীয়ভাবে একটি নতুন শাখা তৈরি করা এবং একটি খালি শাখা চাপানো এবং পরে চেরি-বাছাই করুন এবং আপনার রিমোটে আবার চাপ দিন push

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.