विजुअल स्टूडियो कोड - GitHub पर हटाई गई शाखाओं को हटा दें जो अभी भी VS कोड में दिखाई देती हैं?


93

VSCode में, मैं एक पुल अनुरोध करता हूं और GitHub पर शाखा को हटा देता हूं, फिर भी वह शाखा विजुअल स्टूडियो कोड में दिखाई देती है। यदि मैं शाखा का चयन करता हूं, तो यह एक त्रुटि देता है, जैसा कि अपेक्षित है।

मैं VSCode से अब इन हटाए गए शाखाओं को कैसे हटा सकता हूं - क्या मैं इसे स्वचालित रूप से कर सकता हूं?


2
अनुवर्ती कार्रवाई करने के लिए (3yrs बाद में), मेरे लिए सही उत्तर git fetch --pruneरिमोट शाखा के संदर्भों को अद्यतन / हटाने और git branch -d <branch-name>स्थानीय शाखा ( -Dबल के लिए) को हटाने का एक संयोजन है । VSCode रिफ्रेश पैलेट को पुनः आरंभ करें
Drenai

वी.एस. कोड को पुनः आरंभ करने की आवश्यकता नहीं है, बस ताज़ा करें बटन स्रोत नियंत्रण मेनू में मारा
के रूप में

मैं वास्तव में इसे संभालने के लिए एक फ़ंक्शन का निर्माण करता हूं और इसके बारे में थोड़ा लेख लिखता हूं। लिंक
davidhu

जवाबों:


150

जाहिर है, यह सुविधा जानबूझकर है। मुझे पता चला कि जीथब से हटाए गए सभी दूरस्थ शाखाओं को हटाने का एक सही तरीका निम्नलिखित कमांड चलाना है।

git fetch --prune

फिर कमांड पैलेट से शाखाओं को हटाने के लिए दृश्य स्टूडियो को पुनरारंभ करें


6
@ ब्रायन, इससे आपके पास कोई भी स्थानीय शाखा नहीं है। यह आदेश origin/branch_nameVSCode पर त्वरित स्विच गिट मेनू से निकालता है। उदाहरण के लिए, यदि आपके पास एक स्थानीय शाखा है testऔर इसे गितुब में धकेलना है, तो दो शाखाएँ हैं test, और origin/testगिट शाखा मेनू पर, केवल origin/testशाखा को हटाता है, शाखा नहीं test
दविदु

@ ब्रायन मैंने पाया कि यह वीएस कोड के फिर से शुरू होने के बाद रिमोट डिलीट की गई शाखाओं को साफ कर देगा
डेविड विल्टन

यह आदेश काम नहीं करता है। मैं अभी भी सूची में सभी शाखाओं को देखता हूं जब दोनों कमांड करते हैं git branchया सभी उपलब्ध शाखाओं के साथ ड्रॉपडाउन देखने के लिए शाखा के नाम पर क्लिक करते हैं
अन्ना ओलशेव्सकिया

@AnnaOlshevskaia git branchकेवल स्थानीय शाखाओं को सूचीबद्ध करता है, यह कमांड remotes/branch_nameशाखाओं को हटाने के लिए माना जाता है । git branch -aसब कुछ देखने की कोशिश करो ।
दविदु

2
वी.एस. कोड को पुनः आरंभ करने की आवश्यकता नहीं है, बस ताज़ा करें बटन स्रोत नियंत्रण मेनू में मारा
के रूप में

72

कमांड पैलेट (Ctrl-Shift-P) को खोलने के बाद विजुअल स्टूडियो कोड से लोकल ब्रांच को हटाया जा सकता है, फिर Git: डिलीट ब्रांच को सेलेक्ट किया जा सकता है ... , फिर आप लिस्ट में से उपयुक्त को चुनकर लोकल ब्रांच को डिलीट कर सकते हैं।


1
के माध्यम से यह परीक्षण नहीं किया है, लेकिन यह केवल स्थानीय शाखाओं को दिखाने के लिए लगता है, इसलिए इसे वर्णित के रूप में काम करना चाहिए।
jave.web

2
@ टायलरबेल जैसा कि वह पहले से ही कहते हैं, यह स्थानीय शाखा को हटाने की विधि है जो दूरस्थ शाखा नहीं है।
अनबसेल्वन रॉकी

2
इसका उत्तर होना चाहिए था। मुझे नहीं पता कि मैं इतना बेवकूफ क्यों था कि यह खुद नहीं जानता था। धन्यवाद @ मैथ्यू-
डिसनी

17

GitHub से निकाले गए शाखाएँ अच्छी तरह से हैं ... बस GitHub से हटा दिए गए हैं। आपके पास अपनी मशीन पर शाखा की स्थानीय प्रति अभी भी है। स्थानीय शाखा चलाने को हटाने के लिए git branch -d the_local_branch। VS कोड में ऐसा करने के लिए कोई कमांड नहीं है, लेकिन आप View: Toggle Integrated Terminalकमांड का उपयोग करके VSCode में टर्मिनल शुरू कर सकते हैं और इससे कमांड चला सकते हैं।

शाखा प्रबंधन के बारे में अधिक जानकारी के लिए कृपया git दस्तावेज़ीकरण देखें - https://git-scm.com/book/be/v2/Git-Branching-Branch-Management


धन्यवाद। हाँ, मैं वर्तमान में git कमांड का उपयोग करता हूं .. लेकिन उम्मीद कर रहा था कि vscode git सिंक स्पॉट करेगा कि रिमोट ने उन्हें हटा दिया है - या उन्हें हाइलाइट करें। अनुमान नहीं :-)
Drenai

काफी गूंगा है कि वे अपने git- कमांड लाइन के भीतर देशी git कमांड का समर्थन नहीं करते हैं। बुरी तरह से डिजाइन किया हुआ।
स्टीवन

यहाँ भी विस्तार की प्रतीक्षा कर रहे हैं :)
मार्को

1
कृपया उपरोक्त उत्तर को @ मैथ्यू-
डिसनी

17

कमांड पैलेट खोलें (Ctrl + Shift + P) और Git: Fetch (Prune) चुनें

इस सुविधा को 20 नवंबर, 2018 को वीएस कोड में मिला दिया गया था ।


1
क्या vscode में गिट पुल के इस डिफ़ॉल्ट व्यवहार को बनाने का एक तरीका है?
टुन्के गोन्कोउलू

9

मैंने इस प्रश्न की व्याख्या की: मैं अपनी स्थानीय शाखाओं को विलीन कैसे कर सकता हूं , जो कि विलय के बाद से मैं गेट फेट (प्रून) का उपयोग कर रहा हूं। इसे "हैक" माना जा सकता है, लेकिन इसका उपयोग मैं करता हूं। PowerShell टर्मिनल में:

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

यदि आप PoSH से परिचित नहीं हैं, तो यहां यह बताया गया है: पहली पंक्ति को सभी मर्ज की गई शाखाओं (विकसित और मास्टर के अपवाद के साथ) का नाम मिलता है, और दूसरी पंक्ति उस सूची से गुजरती है और "git Branch -d" चलती है "। जब तक शाखा पूरी तरह से विलय नहीं हो जाती, तब तक आपको देखना चाहिए:

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

प्रत्येक शाखा के लिए। कभी-कभी मैं एक शाखा में चला जाऊंगा, जो नष्ट होने में विफल हो जाती है - यदि ऐसा होता है, और आप सुनिश्चित हैं कि इसे हटा दिया जाना सुरक्षित है (यानी आप स्थानीय काम नहीं खोएंगे जो संग्रहीत नहीं किए गए हैं), तो आप चला सकते हैं:

git branch <branch name> -D

राजधानी डी पर ध्यान दें - जो स्थानीय शाखा को जबरन हटा देता है।


यह एक पागल पॉवरशेल कमांडो है जिसे मुझे अपनी रेपो पर चलाने के लिए बहादुरी के लिए एक उत्थान देना होगा
Drenai

2
प्रतिभा और पागलपन के बीच एक अच्छी रेखा है। यह उस रेखा से अच्छी तरह से दूर है, पागलपन की तरफ।
डैरेन जी

1
नहीं यह नहीं। जब आप इसे देखते हैं, तो यह उतना जटिल नहीं है, और वैसे भी, यह यहाँ से जवाबों का एक मात्र अनुवाद है: stackoverflow.com/questions/6127328/…
स्कॉट स्टैफ़ोर्ड

@ScottStafford मेरे लिए शाखाओं को हटाने के लिए एक 170 वर्ण कमांड simple | complexdivide😉 के जटिल पक्ष पर है
Drenai

7

इस कमांड को चलाने के लिए आपको बस इतना करना है:

git remote prune origin

कुछ अतिरिक्त जो आप कर सकते हैं, क्योंकि यह कभी-कभी केवल इसके लिए एक टर्मिनल खोलने के लिए परेशान होता है .. आप vscode में एक कार्य जोड़ सकते हैं।

ऐसा करने के लिए कृपया इन चरणों का पालन करें:

  1. VSCode में > कमांड पैलेट (cmd / ctrl + Shift + P) देखें
  2. प्रकार कॉन्फ़िगर करें कार्य
  3. टेम्प्लेट से Create.json फ़ाइल चुनें और .vscode फ़ोल्डर के तहत एक नई फ़ाइल बनाई जाएगी ।
  4. कार्यों के अंदर यह जोड़ें:

{"लेबल": "Git Prune", "type": "shell", "कमांड": "git Remote prune origin", "problemMatcher": []}

इसका इस्तेमाल कैसे करें:

  1. ओपन कमांड पैलेट
  2. रन टास्क टाइप करें और इसे चुनें
  3. Git Prune चुनें

संदर्भ:

  1. प्रीत लगाओ

क्या आप जानते हैं कि क्या git remote prune originस्वीकार्य उत्तर से अलग है git fetch --prune? रन टास्क का विवरण बहुत अच्छा है, इसे पोस्ट करने के लिए धन्यवाद
द्रेनई

@ ड्रेनई नहीं, वे समान हैं। लेकिन एक पूर्ण प्रतिक्रिया के लिए यहां देखें
बोगडान अलेक्जेंड्रू मिलिटेरू

5

आप सभी स्थानीय शाखाओं (स्वामी को छोड़कर) को हटा सकते हैं:

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

और आप अभी भी origin/XXXXVSCode में दिखाई देने वाली सभी शाखाओं को हटा सकते हैं लेकिन पहले से ही हटा दिए गए हैं origin:

git fetch --prune

ध्यान दें:

ऊपर का पहला कमांड ( https://stackoverflow.com/a/52006270/3120163 से लिया गया ):

  • सभी शाखाओं को सूचीबद्ध करें
  • सूची से मास्टर शाखा को हटा दें
  • सूची में शाखाओं को हटा दें

यदि आप उस पहले कमांड का स्पष्टीकरण जोड़ सकते हैं तो बहुत अच्छा होगा - यह बहुत आसान है
Drenai

2
मैंने @Drenai
Adrien Renaud

4

मुझे इसे ठीक करने का एक तरीका मिला। इसलिए आपको दूरस्थ को हटाने की आवश्यकता है जो गितुब रेपो से लिंक करता है, फिर रिमोट को फिर से जोड़ें।

Github से हटाई गई सभी शाखाएँ अब vscode में दिखाई नहीं देंगी। मान लिया कि originदूरस्थ रेपो के लिए नाम है।

git remote remove origin

फिर

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

1
मेरी जानकारी में नहीं। यह एकमात्र तरीका है जो मैंने पाया कि दूरस्थ शाखाओं को हटा देगा जो अब मौजूद नहीं है।
द्वैधु १४'१


1

आप की जरूरत नहीं है git fetch --pruneअब और और पुन: प्रारंभ VSCode।
VSCode 1.52 (नवंबर 2020) के साथ, अब आपके पास है:

Git: Prune on fetch

दूरस्थ Refs लाने पर git.pruneOnFetchसेटिंग को सक्षम करने से VS कोड चलेगा git fetch --prune

GitHub से हटाए जाने के बाद स्थानीय स्तर पर कोई अतिरिक्त शाखा नहीं।

पीआर 89249 देखें , फिक्सिंग अंक 86813 :

उपयोग:

{
   "git.pruneOnFetch": true
}

falseडिफ़ॉल्ट रूप से सेटिंग है ।

यह --pruneध्वज को सभी गिटों में जोड़ा जाएगा ।

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