গিট বলে আমি যখন দূরবর্তী শাখাটি মুছি তখন দূরবর্তী রেফ উপস্থিত থাকে না


130

আমি দৌড়ে গেলাম git branch -a

* master
  remotes/origin/test
  remotes/origin/master

আমি আমার দূরবর্তী শাখাটি মুছতে চাই

আমি চেষ্টা করেছিলাম

git push origin --delete remotes/origin/test

আমি পেয়েছি

ত্রুটি: 'রিমোট / উত্স / পরীক্ষা' মুছতে অক্ষম: রিমোট রেফ উপস্থিত নেই

কীভাবে এর অস্তিত্ব নেই?

আমি একটি git branch -aকরেছি এবং আমি এটি তালিকাভুক্ত দেখেছি।

আমি কিছু মিস করেছি?


1
git branch -aআপনার স্থানীয় থেকে শাখা তালিকাভুক্ত করবে আপনার দূরবর্তী থেকে নয়। রাইট?

আমি তাদের সব মনে করি। আমি নিশ্চিত না.
সাইবার 8200

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

1
@ পেপার আমার কাছে দেখে মনে হচ্ছে এটি সত্যিই জিজ্ঞাসা করছে "কেন আমি একটি দূরবর্তী শাখা মুছতে পারি না" (সম্ভবত যখন শাখাটি দূরবর্তী থেকে মুছে ফেলা হয়েছে তবে দূরবর্তী রেফটি স্থানীয়ভাবে উপস্থিত রয়েছে) এবং তাই, সদৃশ নয় তবে এটি করতে পারে একটি পরিষ্কার শিরোনাম
অ্যান্ড্রু স্পেন্সার

1
আমি শিরোনামে একটি সম্পাদনা করেছি, আশা করি এটি প্রশ্নের অভিপ্রায়টির নিকটতম
অ্যান্ড্রু স্পেন্সার

উত্তর:


259

কমান্ডটি আপনার স্থানীয় সংগ্রহস্থলেgit branch -a বিদ্যমান প্রত্যন্ত শাখাগুলি দেখায় । এটি কিছুটা বিভ্রান্তিকর লাগতে পারে তবে এটি বুঝতে আপনাকে বুঝতে হবে যে একটি দূরবর্তী শাখা এবং একটি শাখা যা দূরবর্তী ভাণ্ডারে বিদ্যমান রয়েছে তার মধ্যে পার্থক্য রয়েছে। রিমোট শাখাগুলি এমন স্থানীয় শাখা যা দূরবর্তী সংগ্রহস্থলের শাখাগুলিতে ম্যাপ করে। সুতরাং রিমোট শাখাগুলির সেট রিমোট রিপোজিটরির অবস্থার প্রতিনিধিত্ব করে।

দূরবর্তী শাখাগুলির তালিকা আপডেট করার স্বাভাবিক উপায়টি হ'ল ব্যবহার করা git fetch । এটি স্বয়ংক্রিয়ভাবে দূরবর্তী থেকে শাখাগুলির একটি আপডেট তালিকা পেয়েছে এবং স্থানীয় ভান্ডারগুলিতে দূরবর্তী শাখাগুলি সেট আপ করে, আপনি যে অনুপস্থিত হতে পারেন এমন কোনও প্রতিশ্রুতিবদ্ধ অবজেক্টও এনে দেয়।

যাইহোক, ডিফল্টরূপে, git fetchরিমোটে আর কোনও পাল্টা শাখা নেই এমন দূরবর্তী শাখাগুলি সরান না। এটি করার জন্য, আপনাকে সুস্পষ্টভাবে দূরবর্তী শাখাগুলির তালিকা ছাঁটাই করতে হবে:

git fetch --prune

এটি স্বয়ংক্রিয়ভাবে দূরবর্তী শাখাগুলি থেকে মুক্তি পাবে যা রিমোটে আর নেই। এরপরে, git branch -rআপনাকে শাখাগুলির একটি আপডেট তালিকা দেখাবে যা রিমোটে সত্যই বিদ্যমান: এবং যা আপনি ব্যবহার করে মুছতে পারেন git push

এটি বলা হচ্ছে, ব্যবহারের জন্য git push --deleteআপনাকে দূরবর্তী সংগ্রহস্থলে শাখার নাম উল্লেখ করতে হবে; আপনার দূরবর্তী শাখার নাম নয়। সুতরাং শাখাটি মুছতে test(আপনার দূরবর্তী শাখা দ্বারা প্রতিনিধিত্ব করা origin/test), আপনি ব্যবহার করবেন git push origin --delete test


এছাড়াও git branch -r | grep "origin"কাঁটাচামচ ব্যবহারকারী বড় প্রকল্পগুলিতে সহায়তা করবে
সেরাফ

তাই এই বার্তাটি গিট থেকে পাওয়ার জন্য দুটি কারণ রয়েছে: হয় ব্রাঞ্চটি সার্ভারে ইতিমধ্যে মুছে ফেলা হয়েছিল, বা আপনি ভুলভাবে ব্রাঞ্চের নামটি দিয়ে উপস্থাপন করেছেন remotes/origin/। অথবা উভয়.
অ্যান্ড্রু স্পেন্সার

136

এর অর্থ remotes/origin/testহ'ল testদূরবর্তী সার্ভারে আপনার একটি শাখা ডাকা হয়েছে origin। সুতরাং আদেশ হবে

git push origin --delete test


13
  1. প্রত্যন্ত শাখাগুলির তালিকা পান
git fetch # synchronize with the server
git branch --remote # list remote branches
  1. আপনার দূরবর্তী শাখাগুলির একটি তালিকা পাওয়া উচিত:
origin/HEAD -> origin/master
origin/develop
origin/master
origin/deleteme
  1. এখন, আমরা শাখাটি মুছতে পারি:
git push origin --delete deleteme


4

দূরবর্তী শাখাটি দূরবর্তী / উত্স / পরীক্ষা হিসাবে দেওয়া হয় আপনি দুটি উপায় ব্যবহার করতে পারেন:

git push origin --delete test

এবং

git branch -D -r origin/test

3

আমি শেষ পর্যন্ত একটি সামান্য সমন্বয় দিয়ে পোকে দিয়ে সমাধানটি অনুসরণ করেছি । আমার পদক্ষেপগুলি অনুসরণ করে
- git fetch --prune;
- git branch -aনিম্নলিখিত মুদ্রণ
    master
    branch
    remotes/origin/HEAD -> origin/master
    remotes/origin/master
    remotes/origin/branch(অপসারণের জন্য দূরবর্তী শাখা)
- git push origin --delete branch
এখানে, সরানোর শাখাটির নামটি remotes/origin/branchকেবল সরলভাবে দেওয়া হয়নি branch। এবং শাখাটি সরানো হয়।


মন্তব্যটির জন্য +1 পুনরায়: শাখার নাম, আমি origin/branchযখন এটি ঠিক হওয়া উচিত তখন মুছতে চেষ্টা করছিলাম branch
কেন

1

git branch -a আপনার স্থানীয় শাখাগুলি এবং আপনার দূরবর্তী শাখাগুলি তালিকাবদ্ধ করবে।

এবং ত্রুটির error: unable to delete 'remotes/origin/test': remote ref does not existঅর্থ হল আপনার রিমোটে সেই নামে কোনও শাখা নেই তবে শাখাটি আপনার স্থানীয়টিতে বিদ্যমান।


এটি সহায়ক। এটি আমার মোছার সমস্যাটি সমাধান করেছে। আমি ভাবছি কেন 'গিট পুশ - ডিলিট অরিজিন / টেস্ট' কাজ করে না, যখন "গিট পুশ - ডিলিট টেস্ট" কাজ করেছে
ইউজার 10293779

1

উত্স থেকে 'মাস্টার' ব্যতীত অন্য শাখাগুলি মুছতে একটি সহজ এক-লাইনার:

git branch --remotes | grep -v 'origin/master' | sed "s/origin\///" | xargs -i{foo} git push origin --delete {foo}

এটি করার আগে আপনি এটি চালনার কী কী তা বোঝেন তা নিশ্চিত হন!


এই কোডের জন্য ধন্যবাদ! এটিই কেবলমাত্র গিট কোড যা আমি মাস্টার ব্যতীত সমস্ত দূরবর্তী শাখাগুলি মুছে ফেলার বিষয়ে কাজ করেছি।
অ্যালভিন

1

আমার জন্য এটি it ▶ গিট শাখা -D -r উত্স / মাইব্র্যাঞ্চ কাজ করেছে

বিস্তারিত

It it গিট শাখা -a | গ্রেপ মাইব্রেঞ্চ রিমোটস / উত্স / মাইব্র্যাঞ্চ

। It গিট শাখা -আর | গ্রেপ মাইব্র্যাঞ্চ উত্স / মাইব্রেঞ্চ

It it গিট শাখা বিকাশ * বৈশিষ্ট্য / প্রাক-স্থাপনা

It it গিট পুশ অরিজিন - সম্পূর্ণ মাইব্র্যাঙ্ক ত্রুটি: 'মাইব্র্যাঞ্চ' মুছতে অক্ষম: রিমোট রেফটি ত্রুটির উপস্থিতি নেই: কিছু রেফকে 'git@10.102.100.38: config / myrepo.git' এ ধাক্কা দিতে ব্যর্থ হয়েছে

It it গিট শাখা -ডি -আর উত্স / মাইব্রেঞ্চ মুছে ফেলা দূরবর্তী শাখার উত্স / মাইব্র্যাঞ্চ (ছিল 62c7421)।

It it গিট শাখা -a | গ্রেপ মাইবাং

। It গিট শাখা -আর | গ্রেপ মাইবাং


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