सवाल मैं स्थानीय रूप से और दूरस्थ रूप से गिट शाखा कैसे हटा सकता हूं?


मैं स्थानीय रूप से और मेरे रिमोट प्रोजेक्ट कांटा दोनों पर एक शाखा को हटाना चाहता हूं GitHub

दूरस्थ शाखा को हटाने में विफल प्रयास

$ git branch -d remotes/origin/bugfix
error: branch 'remotes/origin/bugfix' not found.

$ git branch -d origin/bugfix
error: branch 'origin/bugfix' not found.

$ git branch -rd origin/bugfix
Deleted remote branch origin/bugfix (was 2a14ef7).

$ git push
Everything up-to-date

$ git pull
From github.com:gituser/gitproject
* [new branch] bugfix -> origin/bugfix
Already up-to-date.

सफलतापूर्वक हटाने के लिए मुझे अलग-अलग करने की क्या ज़रूरत है remotes/origin/bugfix स्थानीय रूप से और गिटहब दोनों में शाखाएं?


13843
2018-01-05 01:12


मूल


मॉडरेटर नोट: यदि आप इस प्रश्न का उत्तर देना चाहते हैं, तो ध्यान दें कि पहले से ही 40 उत्तरों पोस्ट किए गए हैं। क्या आपका नया उत्तर कोई महत्वपूर्ण मूल्य जोड़ देगा? - Robert Harvey♦
नोट: गिट 2.5+ (क्यू 2 2015) के लिए, सटीक संदेश "deleted remote-tracking branch": देख github.com/git/git/commit/... - VonC


जवाब:


कार्यकारी सारांश

$ git push --delete <remote_name> <branch_name>
$ git branch -d <branch_name>

ध्यान दें कि ज्यादातर मामलों में रिमोट नाम है origin

स्थानीय शाखा हटाएं

हटाने के लिए स्थानीय शाखा निम्नलिखित में से एक का उपयोग करें:

$ git branch -d branch_name
$ git branch -D branch_name

ध्यान दें:  -d विकल्प के लिए एक उपनाम है --delete, जो केवल शाखा को हटा देता है अगर यह पहले से ही अपनी अपस्ट्रीम शाखा में पूरी तरह से विलय हो चुका है। आप भी इस्तेमाल कर सकते हैं -D, जो एक उपनाम है --delete --force, जो "विलय की स्थिति के बावजूद" शाखा को हटा देता है। [स्रोत: man git-branch]

रिमोट शाखा हटाएं [8-सितंबर-2017 को अपडेट किया गया]

के रूप में गिट v1.7.0, आप एक हटा सकते हैं दूरस्थ शाखा का उपयोग कर

$ git push <remote_name> --delete <branch_name>

जो याद रखना आसान हो सकता है

$ git push <remote_name> :<branch_name>

जो में जोड़ा गया था गिट v1.5.0 "रिमोट शाखा या टैग को हटाने के लिए।"

शुरू हो रहा है गिट v2.8.0 आप भी उपयोग कर सकते हैं git push उसके साथ -d के लिए एक उपनाम के रूप में विकल्प --delete

इसलिए, आपके द्वारा स्थापित गिट का संस्करण यह निर्धारित करेगा कि आपको आसान या कठिन वाक्यविन्यास का उपयोग करने की आवश्यकता है या नहीं।

रिमोट शाखा हटाएं [5-जनवरी-2010 से मूल उत्तर]

अध्याय 3 से प्रो गिट स्कॉट चकॉन द्वारा:

रिमोट शाखाओं को हटाना

मान लें कि आप रिमोट शाखा के साथ कर रहे हैं - कहें, आप और आपके सहयोगी एक सुविधा के साथ समाप्त हो गए हैं और इसे अपने रिमोट की मास्टर शाखा में विलय कर दिया है (या जो भी आपकी स्थिर कोडलाइन है)। आप बजाय रिटैक्ट सिंटैक्स का उपयोग कर रिमोट ब्रांच को हटा सकते हैं git push [remotename] :[branch]। यदि आप सर्वर से अपनी सर्वरफिक्स शाखा को हटाना चाहते हैं, तो आप निम्न चलाते हैं:

$ git push origin :serverfix
To git@github.com:schacon/simplegit.git
 - [deleted]         serverfix

बूम। आपके सर्वर पर कोई और शाखा नहीं। आप इस पृष्ठ को कुत्ते-कान करना चाह सकते हैं, क्योंकि आपको उस कमांड की आवश्यकता होगी, और आप सिंटैक्स को भूल जाएंगे। इस आदेश को याद करने का एक तरीका याद कर रहा है git push [remotename] [localbranch]:[remotebranch] वाक्यविन्यास कि हम थोड़ी देर पहले चला गया। यदि आप छोड़ देते हैं [localbranch] भाग, तो आप मूल रूप से कह रहे हैं, "मेरी तरफ से कुछ भी नहीं ले लो और इसे बनाओ [remotebranch]। "

मैंने जारी किया git push origin :bugfix और यह खूबसूरती से काम किया। स्कॉट चकॉन सही था-मैं चाहता हूं कुत्ते कान वह पृष्ठ (या स्टैक ओवरफ़्लो पर इसका उत्तर देकर कुत्ते कान)।

फिर आपको इसे अन्य मशीनों पर निष्पादित करना चाहिए

git fetch --all --prune

परिवर्तनों का प्रचार करने के लिए।


17234
2018-01-05 01:13



यदि आप वाक्यविन्यास जानते हैं git push origin local_branch:remote_branch, फिर एक शाखा को हटाने के लिए वाक्यविन्यास git push origin :remote_branch प्यारा है इससे पहले एक शून्य है : - Marc-André Lafortune
एक करने के लिए मत भूलना git fetch --all --prune सर्वर पर रिमोट शाखा हटाने के बाद अन्य मशीनों पर। ||| स्थानीय शाखा को हटाने के बाद git branch -d और रिमोट शाखा को हटाने के साथ git push origin --delete अन्य मशीनों में अभी भी "अप्रचलित ट्रैकिंग शाखाएं" हो सकती हैं (उन्हें देखने के लिए git branch -a)। इन से छुटकारा पाने के लिए git fetch --all --prune। - Trevor Boyd Smith
@ ट्रेवर बॉयडस्मिथ के अलावा git branch -a सभी शाखाओं को देखने के लिए, आप भी उपयोग कर सकते हैं git branch -r केवल दूरस्थ शाखाओं को देखने के लिए। यह भी देखें git remote show origin स्रोत: gitready.com/intermediate/2009/02/13/list-remote-branches.html - Sandra
मुझे भागना पड़ा git branch -D Branch_Name स्थानीय शाखा से छुटकारा पाने के लिए - Kolob Canyon
@ कोलोब कैन्यन आपको केवल डीडी का उपयोग करना होगा यदि शाखा को किसी अन्य शाखा में विलय नहीं किया गया है। - BTRUE


मैथ्यू का जवाब हटाने के लिए बहुत अच्छा है दूरस्थ शाखाएं और मैं स्पष्टीकरण की भी सराहना करता हूं, लेकिन दोनों आदेशों के बीच एक साधारण अंतर बनाने के लिए:

ए को हटाने के लिए स्थानीय शाखा आपकी मशीन से:

git branch -d {the_local_branch} (उपयोग -D विलय की स्थिति की जांच किए बिना शाखा को हटाने के लिए मजबूर करने के लिए)

ए को हटाने के लिए रिमोट शाखा सर्वर से:

git push origin --delete {the_remote_branch}

संदर्भ: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote


2872
2018-06-12 14:51



@megido अच्छी तरह से -D बल हटा देता है, -d अगर आपको पहले से ही विलय नहीं हुआ है तो आपको चेतावनी मिलती है। - TankorSmash
यदि आपकी स्थानीय शाखा मास्टर के साथ विलय नहीं हुई है और भाग गया है 'git branch -d your_branch तो आप की तरह त्रुटि होगी error: The branch 'your_branch' is not fully merged. If you are sure you want to delete it, run 'git branch -D your_branch'. - geeks
मैं डीडी के बजाय -d का उपयोग करने का सुझाव दूंगा क्योंकि यह सुरक्षित है। अगर-डी असम्बद्ध कामों के कारण विफल रहता है तो आपको इसका आकलन करने की आवश्यकता है और यदि इसे हटाने के लिए निश्चित रूप से ठीक है तो डी-डी का उपयोग करें। - rooby
रिपोजिटरी क्लोन वाले अन्य जहां रिमोट शाखाएं हटा दी गई हैं उन्हें चलाना चाहिए git remote prune <name>(उदाहरण के लिए git remote prune origin) स्थानीय रूप से पुरानी शाखाओं को हटाने के लिए जो रिमोट में मौजूद नहीं हैं। - code_dredd
यदि आपकी कांटा में आपकी शाखा (हमेशा मूल नहीं), उचित भंडार का उपयोग करें। जैसे गिट पुश myRepo: mrbranchtodelete - Dhanuka777


संक्षिप्त उत्तर

यदि आप निम्न आदेशों के बारे में अधिक विस्तृत स्पष्टीकरण चाहते हैं, तो अगले खंड में लंबे उत्तरों को देखें।

रिमोट शाखा को हटाना:

git push origin --delete <branch>  # Git version 1.7.0 or newer
git push origin :<branch>          # Git versions older than 1.7.0

स्थानीय शाखा को हटाना:

git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches

स्थानीय रिमोट-ट्रैकिंग शाखा को हटाना:

git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter

git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p      # Shorter

लंबा उत्तर: हटाने के लिए 3 अलग-अलग शाखाएं हैं!

जब आप स्थानीय और दूरस्थ रूप से दोनों शाखाओं को हटाने से निपट रहे हैं, तो ध्यान रखें इसमें शामिल 3 अलग-अलग शाखाएं हैं:

  1. स्थानीय शाखा X
  2. रिमोट मूल शाखा X
  3. स्थानीय रिमोट ट्रैकिंग शाखा origin/X जो रिमोट शाखा को ट्रैक करता है X

Visualization of 3 branches

मूल पोस्टर इस्तेमाल किया

git branch -rd origin/bugfix

जो केवल उसे हटा दिया स्थानीय रिमोट ट्रैकिंग शाखा  origin/bugfix, और वास्तविक रिमोट शाखा नहीं bugfix पर origin

Diagram 2

उस वास्तविक रिमोट शाखा को हटाने के लिए, आप की जरूरत है

git push origin --delete bugfix

Diagram 3

अतिरिक्त जानकारिया

निम्नलिखित खंड आपके रिमोट और रिमोट-ट्रैकिंग शाखाओं को हटाने पर विचार करने के लिए अतिरिक्त विवरण का वर्णन करते हैं।

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

ध्यान दें कि रिमोट शाखा को हटाया जा रहा है X एक का उपयोग कर कमांड लाइन से git push  स्थानीय रिमोट-ट्रैकिंग शाखा को भी हटा देगा  origin/X, इसलिए अप्रचलित रिमोट-ट्रैकिंग शाखा को छीनना जरूरी नहीं है git fetch --prune या git fetch -pहालांकि, अगर आपने इसे वैसे भी किया तो इससे कोई दिक्कत नहीं होगी।

आप रिमोट-ट्रैकिंग शाखा को सत्यापित कर सकते हैं origin/X निम्नलिखित को चलाकर भी हटा दिया गया था:

# View just remote-tracking branches
git branch --remotes
git branch -r

# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a

अप्रचलित स्थानीय रिमोट-ट्रैकिंग शाखा मूल / एक्स काटना

अगर आपने अपनी रिमोट शाखा नहीं हटाई है X कमांड लाइन (ऊपर की तरह) से, फिर आपके स्थानीय रेपो में अभी भी (अब अप्रचलित) रिमोट-ट्रैकिंग शाखा होगी origin/X। ऐसा तब हो सकता है जब आपने गिटहब के वेब इंटरफेस के माध्यम से सीधे रिमोट शाखा हटा दी हो, उदाहरण के लिए।

इन अप्रचलित रिमोट-ट्रैकिंग शाखाओं को हटाने के लिए एक सामान्य तरीका (गिट संस्करण 1.6.6 के बाद से) बस चलाने के लिए है git fetch उसके साथ --prune या छोटा -pध्यान दें कि यह किसी भी दूरस्थ शाखाओं के लिए सभी अप्रचलित स्थानीय रिमोट-ट्रैकिंग शाखाओं को हटा देता है जो अब दूरस्थ पर मौजूद नहीं हैं:

git fetch origin --prune
git fetch origin -p # Shorter

यहां से प्रासंगिक उद्धरण है 1.6.6 रिलीज नोट्स (जोर मेरा):

"गिट fetch" सीखा  --all तथा --multipleविकल्प, लाने के लिए विकल्प   कई भंडार, और --prune रिमोट ट्रैकिंग को हटाने का विकल्प   शाखाएं जो बेवकूफ हो गईं।  ये "गिट रिमोट अपडेट" और "गिट" बनाते हैं   रिमोट प्रून "कम आवश्यक (रिमोट को हटाने की कोई योजना नहीं है"   अपडेट करें "न ही" रिमोट प्रून ", यद्यपि)।

अप्रचलित दूरस्थ ट्रैकिंग शाखाओं के लिए स्वचालित स्वचालित छंटनी के लिए वैकल्पिक

वैकल्पिक रूप से, अपनी अप्रचलित स्थानीय रिमोट-ट्रैकिंग शाखाओं को छीनने के बजाय git fetch -p, आप अतिरिक्त नेटवर्क ऑपरेशन करने से बच सकते हैं मैन्युअल रूप से शाखा (एसएस) को मैन्युअल रूप से हटाकर --remote या -r झंडे:

git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter

यह भी देखें


1641
2018-05-30 18:32



आपके चित्रण से, मैं देख सकता हूं कि स्थानीय क्लोन रेपो और रिमोट मूल रेपो हैं। तो कम से कम दो भौतिक शाखाएं हैं। हटाने के लिए तीसरी शाखा कहां है? क्या तीसरी शाखा केवल एक सूचक है जो स्थानीय क्लोन रेपो में एक प्रतिबद्धता की ओर इशारा करती है? - huggie
@ huggie कि यह बहुत सही है। गिट में शाखाएं केवल काम करने के लिए जुड़े बुकमार्क्स हैं। तो ऊपर मेरे ग्राफ में, वहाँ हैं X तथा origin/X स्थानीय क्लोन (2 शाखाओं) में बुकमार्क, और फिर वहां है X रिमोट पर (3 शाखाएं बनाना)।
रिमोट ट्रैकिंग शाखा के लिए +1। जब आप किसी और की शाखा को क्लोन करते हैं तो यह शाखा समस्या का कारण बनती है। यह आपके कामों को ट्रैक करता है और आपको पूछता है कि क्या आप उस व्यक्ति की शाखा में धक्का देना चाहते हैं। - Kermit_ice_tea


शाखा हटाने के लिए कदम:

हटाने के लिए रिमोट शाखा:

git push origin --delete <your_branch> 

हटाने के लिए स्थानीय शाखा, आपके पास तीन तरीके हैं:

1: git branch -D <branch_name> 

2: git branch --delete --force <branch_name>  //same as -D

3: git branch --delete  <branch_name>         //error on unmerge

के बारे में बताएं: ठीक है, बस बताओ कि क्या हो रहा है!

बस करो git push origin --delete सेवा मेरे केवल अपनी रिमोट शाखा हटाएं, अंत में शाखा का नाम जोड़ें और यह हटा देगा और इसे एक ही समय में रिमोट पर धक्का देगा ...

इसके अलावा, git branch -D, जो बस स्थानीय शाखा को हटा देता है केवल! ...

-D के लिए खड़ा है --delete --force जो शाखा को हटा देगा, यहां तक ​​कि इसे विलय नहीं किया गया है (बल हटाएं), लेकिन आप इसका भी उपयोग कर सकते हैं -d जो के लिए खड़ा है --delete जो शाखा विलय स्थिति के संबंध में एक त्रुटि फेंक ...

मैं चरणों को दिखाने के लिए नीचे दी गई छवि भी बनाता हूं:

delete a remote and local branch in git


927
2018-06-27 13:13



git branch -a स्थानीय और दूरस्थ शाखाओं को प्रदर्शित करेगा। यह आपके लिए आरेख परिचय के लिए मदद करेगा। - LoranceChen
ध्यान दें कि यदि आप उस शाखा पर सेट कर रहे हैं जिसे आप हटाना चाहते हैं, तो आपको स्थानीय शाखा को हटाने से पहले किसी अन्य व्यक्ति को हटाने की आवश्यकता है (उदाहरण के लिए: मास्टर)। - BaDr Amer
[विषय से बाहर] आपने उपर्युक्त अद्भुत छवि कैसे बनाई? - Lucas Caton


आप दूरस्थ शाखा को हटाने के लिए निम्न का भी उपयोग कर सकते हैं।

git push --delete origin serverfix

जो वही काम करता है

git push origin :serverfix

लेकिन यह याद रखना आसान हो सकता है।


703
2017-10-27 22:22



... और उपयोग करने के लिए सुरक्षित: ओ - cst1992
आप स्थानीय शाखा को हटाने के बारे में हिस्सा भूल गए हैं जो इनके द्वारा किया जा सकता है: git branch -d <local_branch> या git branch -D <local_branch> बल हटाने के लिए - Amit Dash


यदि आप शाखा को हटाना चाहते हैं, तो शाखा को हटाने के अलावा शाखा के पहले चेकआउट करें।

git checkout other_than_branch_to_be_deleted

स्थानीय शाखा को हटाना:

git branch -D branch_to_be_deleted

रिमोट शाखा को हटाना:

git push origin --delete branch_to_be_deleted

344
2017-10-07 13:52





युक्ति: जब आप शाखाओं का उपयोग कर हटाते हैं

git branch -d <branchname>    # deletes local branch

या

git push origin :<branchname> # deletes remote branch

केवल संदर्भ हटा दिए जाते हैं। भले ही शाखा वास्तव में रिमोट पर हटा दी गई हो, इसके संदर्भ में अभी भी आपकी टीम के सदस्यों के स्थानीय भंडारों में मौजूद है। इसका मतलब यह है कि अन्य टीम के सदस्यों के लिए हटाए गए शाखाएं तब भी दिखाई देती हैं जब वे करते हैं git branch -a

इसे हल करने के लिए आपकी टीम के सदस्य हटाए गए शाखाओं को छीन सकते हैं

git remote prune <repository>

यह आम तौर पर है git remote prune origin


329
2017-11-07 13:02



आपको उपरोक्त को स्पष्ट करना चाहिए git push ऑपरेशन स्थानीय शाखा हटा देता है तथा रिमोट शाखा - Annika Backstrom
ध्यान दें कि git remote prune अप्रचलित रिमोट-ट्रैकिंग शाखाओं को हटाने के लिए कुछ हद तक अप्रचलित तरीका है, इसका उपयोग करने का नया तरीका उपयोग करना है git fetch --prune या git fetch -p।
@RRMadhav, वास्तव में आपको हटाए जाने के बाद हटाई गई शाखा नहीं दिखाई देगी क्योंकि दूरस्थ शाखा के संदर्भ को स्थानीय रूप से आपके लिए हटा दिया जाएगा। आपकी टीम पर किसी और ने जिस शाखा को चेक किया है, उसमें अभी भी वह संदर्भ होगा और जब तक वे शाखा को छीन नहीं लेते तब तक इसे तब भी देखेंगे। - pfrenssen