ভিজ্যুয়াল স্টুডিও কোড - গিটহাবের মুছে ফেলা শাখাগুলি সরিয়ে ফেলুন যা এখনও ভিএস কোডে দেখায়?


93

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

আমি কীভাবে এখন ভিএসকোড থেকে মুছে ফেলা এই শাখাগুলি সরিয়ে ফেলব - আমি কি এটি স্বয়ংক্রিয়ভাবে করতে পারি?


4
অনুসরণ করার জন্য (তিন বছর পরে), আমার জন্য সঠিক উত্তরটি git fetch --pruneদূরবর্তী শাখা উল্লেখগুলি আপডেট / মুছে git branch -d <branch-name>ফেলার এবং স্থানীয় শাখা মুছে ফেলার ( -Dজোর করে) মিশ্রণ । পুনর্সূচনা VSCode রিফ্রেশ প্যালেট
Drenai

বনাম কোড পুনরায় চালু করার কোন প্রয়োজন নেই, শুধু রিফ্রেশ বোতামটি উত্স কন্ট্রোল মেনুতে আঘাত
আঃ

আমি এটি পরিচালনা করতে আসলে একটি ফাংশন তৈরি করি এবং এটি সম্পর্কে একটি সামান্য নিবন্ধ লিখি। লিঙ্ক
দবিধু

উত্তর:


150

স্পষ্টতই, এই বৈশিষ্ট্যটি ইচ্ছাকৃত। আমি জানতে পেরেছি যে গিথুব থেকে মুছে ফেলা সমস্ত রিমোট শাখা মুছে ফেলার একটি সঠিক উপায় নিম্নলিখিত কমান্ডটি চালানো।

git fetch --prune

তারপরে কমান্ড প্যালেট থেকে শাখাগুলি সরাতে ভিজ্যুয়াল স্টুডিও পুনরায় চালু করুন


6
@ ব্রায়ান, এটি আপনার কোনও স্থানীয় শাখা সরিয়ে দেয় না। এই কমান্ডটি origin/branch_nameভিএসকোডের দ্রুত সুইচ গিট মেনু থেকে সরিয়ে দেয় । উদাহরণস্বরূপ, যদি আপনার একটি স্থানীয় শাখা থাকে testএবং এটি গিথুবকে ধাক্কা দেয় তবে দুটি শাখা রয়েছে testএবং origin/testগিট শাখা মেনুতে, ছাঁটাই কেবল origin/testশাখাটি সরিয়ে দেয় test
দবিধু

@ ব্রায়ান আমি দেখতে পেয়েছি যে এটি ভিএস কোড পুনরায় চালু করার পরে দূরবর্তী মুছে ফেলা শাখাগুলি সাফ করবে
ডেভিড উইল্টন

এই আদেশ কাজ করে না। আমি এখনও তালিকার সমস্ত শাখা দুটিই দেখতে পাচ্ছি যখন কমান্ড করবেন git branchবা সমস্ত উপলভ্য শাখাগুলি সহ একটি ড্রপডাউন দেখতে শাখার
নামটিতে

@ আনা ওলশেভস্কাইয়া git branchকেবল স্থানীয় শাখাগুলির তালিকা করে, এই আদেশটি remotes/branch_nameশাখাগুলি সরিয়ে নেওয়ার কথা । git branch -aসব কিছু দেখার চেষ্টা করুন ।
দবিধু

4
বনাম কোড পুনরায় চালু করার কোন প্রয়োজন নেই, শুধু রিফ্রেশ বোতামটি উত্স কন্ট্রোল মেনুতে আঘাত
আঃ

72

কমান্ড প্যালেট (সিটিআরএল-শিফট-পি) খোলার পরে গিট: শাখা মুছুন ... নির্বাচন করে স্থানীয় শাখাগুলি ভিজ্যুয়াল স্টুডিও কোড থেকে সরানো যেতে পারে , আপনি তালিকা থেকে উপযুক্ত একটি নির্বাচন করে স্থানীয় শাখাটি মুছতে পারেন।


4
এটি পরীক্ষা করে দেখেনি, তবে এটি কেবল স্থানীয় শাখাগুলি দেখায় বলে মনে হচ্ছে, সুতরাং এটি বর্ণিত হিসাবে কাজ করা উচিত।
jave.web

4
@ টাইলারবেল যেমনটি ইতিমধ্যে বলেছেন, এটি স্থানীয় শাখা দূরবর্তী শাখা অপসারণের পদ্ধতি।
আনবসেলভেন রকি

4
এই উত্তর হওয়া উচিত ছিল। আমি নিজেকে জানি না কেন আমি এত বোকা ছিলাম তা আমি জানি না। আপনাকে @
ম্যাথিউ

17

গিটহাব থেকে সরানো শাখাগুলি ভাল ... সবেমাত্র গিটহাব থেকে সরানো হয়েছে। আপনার কাছে এখনও আপনার মেশিনে শাখার স্থানীয় কপি রয়েছে। স্থানীয় শাখা রান মুছতে git branch -d the_local_branch। এটি করার জন্য ভিএস কোডে কোনও কমান্ড নেই, তবে আপনি ভিএসকোডে টার্মিনালটি View: Toggle Integrated Terminalকমান্ড এবং রান কমান্ড ব্যবহার করে শুরু করতে পারেন ।

শাখা পরিচালন সম্পর্কে আরও তথ্যের জন্য দয়া করে গিট ডকুমেন্টেশন দেখুন - https://git-scm.com/book/be/v2/Git- ব্রাঞ্চিং- ব্রাঞ্চ- পরিচালনা


হেই ধন্যবাদ. হ্যাঁ, আমি বর্তমানে গিট কমান্ডগুলি ব্যবহার করছি .. তবে আশা করছিলাম যে ভিসকোড গিট সিঙ্কটি এটি দূরবর্তীগুলি সরিয়ে নিয়েছে - বা তাদের হাইলাইট করবে। অনুমান করবেন না :-)
ড্রেনাই

বেশ বোবা যে তারা তাদের গিট-কমান্ড লাইনের মধ্যে নেটিভ গিট কমান্ডগুলি সমর্থন করে না। খারাপভাবে ডিজাইন করা হয়েছে।
স্টিভেন

এছাড়াও এখানে সম্প্রসারণের জন্য অপেক্ষা করছেন :)
মার্কো

4
দয়া করে উপরের উত্তরটি দেখুন @
ম্যাথিউ

17

কমান্ড প্যালেট (Ctrl + Shift + P) খুলুন এবং গিট: আনুন (ছাঁটাই) নির্বাচন করুন

এই বৈশিষ্ট্য ছিল মার্জ নভেম্বর 20, 2018 উপর বনাম কোড মধ্যে।


4
ভিসকোডে গিট পুলের এই ডিফল্ট আচরণ করার কোনও উপায় আছে কি?
টুনচে Göncüoğlu

9

আমি এই প্রশ্নের ব্যাখ্যাটি ব্যাখ্যা করেছি: আমি কীভাবে আমার স্থানীয় শাখাগুলি মুছতে পারি যা একীভূত হয়েছে, যেহেতু আমি কমান্ড প্যালেট থেকে গিট ফেচ (ছাঁটাই) ব্যবহার করছি। এটি একটি "হ্যাক" হিসাবে বিবেচিত হতে পারে তবে এটি আমি ব্যবহার করি। পাওয়ারশেল টার্মিনালে:

$branches = (git branch --merged).replace(" ", "").replace("*", "") | ? { $_ -ne "develop" -and $_ -ne "master" }
foreach ($branch in $branches) { git branch $branch -d }

আপনি যদি পিওএসএইচের সাথে পরিচিত না হন তবে এখানে যা ঘটে তা এখানে রয়েছে: প্রথম লাইনটি সমস্ত মার্জড শাখার নাম পায় (বিকাশ এবং মাস্টার বাদে), এবং দ্বিতীয় লাইনটি সেই তালিকার মধ্য দিয়ে লুপ করে এবং "গিট শাখা-ডি চালায়" "। যতক্ষণ না শাখা পুরোপুরি মার্জ হয়ে যায়, আপনার দেখা উচিত:

Deleted branch <branch name> (was <commit ID>).

প্রতিটি শাখার জন্য। মাঝেমধ্যে আমি এমন একটি শাখায় দৌড়াব যা মুছতে ব্যর্থ হয় - যদি এটি ঘটে থাকে এবং আপনি নিশ্চিত হন যে এটি মুছে ফেলা নিরাপদ (যেমন আপনি স্থানীয় কাজ যে সঞ্চিত না রেখেছেন তা হারাবেন না), আপনি চালাতে পারেন:

git branch <branch name> -D

মূলধন ডি নোট করুন - যা স্থানীয় শাখাটি জোর করে মুছে ফেলে।


এটি একটি ক্রেজি পাওয়ারশেল কমান্ড 😊 আপনার রেপোতে এটি চালানোর জন্য আমাকে সাহসিকতার জন্য একটি উত্সাহ দিতে হবে
Drenai

4
প্রতিভা এবং উন্মাদনের মধ্যে একটি সূক্ষ্ম রেখা আছে। এটি সেই লাইন থেকে খুব দূরে, উন্মাদতার দিক থেকে।
ড্যারেন জি

4
না এইটা না. আপনি এটি তাকান যখন এটি জটিল নয়, এবং যাইহোক, এটি এখান থেকে উত্তরের একটি পাওয়ার শেল অনুবাদ: stackoverflow.com/questions/6127328/…
স্কট স্টাফোর্ড

আমার জন্য @ScottStafford ডিলিট শাখা করার জন্য একটি 170 চরিত্র কমান্ডের জটিল দিকে থাকে simple | complexdivide😉
Drenai

7

আপনাকে যা করতে হবে তা হ'ল এই আদেশটি চালানো:

git remote prune origin

অতিরিক্ত কিছু যা আপনি করতে পারেন, কারণ এটির জন্য কখনও কখনও টার্মিনাল খোলার বিরক্তি হয় .. আপনি vscode এ কোনও কাজ যুক্ত করতে পারেন।

এটি করতে দয়া করে এই পদক্ষেপগুলি অনুসরণ করুন:

  1. ভিএসকোড ভিউতে> কমান্ড প্যালেট ( সেন্টিমিটার / সিটিআরএল + শিফট + পি)
  2. টাইপ করুন কনফিগার টাস্ক
  3. টেমপ্লেট থেকে Tasks.json ফাইল তৈরি করুন নির্বাচন করুন এবং .vscode ফোল্ডারের অধীনে একটি নতুন ফাইল তৈরি করা হবে ।
  4. ভিতরে অ্যারেগুলিতে এটিকে যুক্ত করুন:

{"লেবেল": "গিট প্রুন", "টাইপ": "শেল", "কমান্ড": "গিট রিমোট প্রুন আদি", "সমস্যাম্যাচার": []}

এটি কিভাবে ব্যবহার করতে:

  1. ওপেন কমান্ড প্যালেট
  2. রান টাস্ক টাইপ করুন এবং এটি নির্বাচন করুন
  3. গিট ছাঁটাই নির্বাচন করুন

তথ্যসূত্র:

  1. গিট ছাঁটাই

আপনি কি জানেন git remote prune originযে গ্রহণযোগ্য উত্তর থেকে পৃথক কিনা git fetch --prune? রান টাস্ক
বিশদটি

@ ড্রেনাই না, তারা একই রকম তবে পুরো প্রতিক্রিয়ার জন্য এখানে
বোগদান আলেকজান্দ্রু মিলিতারু

5

আপনি এর সাথে স্থানীয় সমস্ত শাখা (মাস্টার ব্যতীত) মুছে ফেলতে পারেন:

git branch -r | grep -v "master" | xargs git branch -D

এবং আপনি এখনও origin/XXXXভিএসকোডে প্রদর্শিত সমস্ত শাখাগুলি সরিয়ে ফেলতে পারেন তবে এর মাধ্যমে ইতিমধ্যে মুছে ফেলা হয়েছে origin:

git fetch --prune

বিঃদ্রঃ:

উপরে প্রথম কমান্ড ( https://stackoverflow.com/a/52006270/3120163 থেকে নেওয়া ):

  • সমস্ত শাখা তালিকাভুক্ত
  • তালিকা থেকে মাস্টার শাখা অপসারণ
  • তালিকার শাখাগুলি মুছুন

আপনি যদি প্রথম কমান্ডটির ব্যাখ্যা যোগ করতে পারেন তবে দুর্দান্ত হবে - এটি খুব সহজ 👍
Drenai

4
আমি @ ড্রেনাই
অ্যাড্রিয়েন রেনাউড

4

আমি এটি ঠিক করার একটি উপায় খুঁজে পেয়েছি। সুতরাং আপনাকে গিথুব রেপোতে সংযুক্ত যে রিমোটটি সরিয়ে ফেলতে হবে, তারপরে আবার রিমোট যুক্ত করুন।

গিথুব থেকে মুছে ফেলা সমস্ত শাখা vscode এ আর প্রদর্শিত হবে না। ধরে নিচ্ছি যে originএটি দূরবর্তী রেপোর নাম।

git remote remove origin

তারপর

git remote add origin git@github.com:your-username/repo-name.git

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


1

আপনাকে git fetch --pruneআর ভিএসকোড পুনরায় আরম্ভ করতে হবে না।
ভিএসকোড 1.52 (নভেম্বর 2020) এর সাথে আপনার এখন রয়েছে:

গিট: আনার উপর ছাঁটাই

রিমোট রেফগুলি আনার সময় git.pruneOnFetchসেটিংস সক্ষম করা ভিসি কোড চালাবে git fetch --prune

গিটহাব থেকে মুছে ফেলা হলে স্থানীয়ভাবে আর কোনও অতিরিক্ত শাখা তাদের করা হয় না।

পিআর 89249 দেখুন , সমস্যা স্থির করে 86813 :

ব্যবহার:

{
   "git.pruneOnFetch": true
}

সেটিং falseডিফল্ট হয়।

এটি --pruneসমস্ত গিট ফেচগুলিতে পতাকা যুক্ত করবে ।

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