2010-03-01 9 views
17

यदि आप git branch -d branchname करते हैं, तो यह शाखा के नाम को हटा देगा यदि यह आपके इतिहास में पहले की प्रतिबद्धता का संदर्भ देता है, या आपको बताता है कि आपको -D अन्यथा उपयोग करने की आवश्यकता है। मैं अक्सर शाखाएं बनाते हैं जिन्हें बाद में मास्टर को धकेल दिया जाता है, और इस प्रकार इस मानदंड से हटाया जा सकता है। क्या मास्टर की पूर्व कार्य करने वाली सभी शाखाओं को सूचीबद्ध करने का कोई आसान तरीका है, यानी, शाखाएं जो गिट को -d विकल्प से हटाने में कोई दिक्कत नहीं होगी? बोनस अंक यदि यह एक ही समय में सभी शाखाओं के लिए काम करता है, न केवल मास्टर।सूची गिट शाखाएं जिन्हें सुरक्षित रूप से हटाया जा सकता है

मुझे 82 स्थानीय शाखाएं मिली हैं और मुझे पता है कि उनमें से अधिकतर अब तक सुरक्षित रूप से हटाए जा सकते हैं, लेकिन मैं इसे करने की कोशिश करने के लिए प्रत्येक को जाने के लिए समय नहीं लेना चाहता ।

उत्तर

25

प्रयास करें:

$ git checkout master # or whatever branch you might compare against ... 
$ git branch --no-merged 
$ git branch --merged 

git branch documentation से:

--merged साथ

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

संपादित करें:

हर शाखा के लिए यह दिखाने के लिए है, तो आप कुछ इस तरह कर सकता है:

उदाहरण रेपो:

o <--- experimental 
| 
o 
| 
o <--- next 
| 
o 
| 
o <--- master 
| 
o----o <--- broken 
| 
o 
| 


$ for branch in `git branch --no-color --verbose | \ 
sed -e 's/*//' | awk '{print $1}'`; \ 
do echo "[$branch]"; git checkout -q $branch; git branch --merged; done 

[broken] 
* broken 
[master] 
* master 
[next] 
master 
* next 
[experimental] 
master 
next 
* experimental 
+0

मैं तुम्हें एक शॉर्टकट :) शाखा के रूप में br है संभालने हूँ। यह काम करता है। अब, प्रत्येक शाखा के लिए इसे कैसे करें, इसलिए मैं उन शाखाओं की एक अच्छी सूची प्राप्त कर सकता हूं जिन्हें मैं हटा सकता हूं। इसके अलावा, यह दूरस्थ शाखाएं दिखाता है, जो मैं नहीं चाहता हूं। – asmeurer

+0

ग्रेट। मुझे लगा कि इसे कुछ खोल स्क्रिप्ट की आवश्यकता होगी। हालांकि मुझे sed या awk पता नहीं है, तो मुझे खुशी है कि आपने इसे लिखा था। मुझे लगता है कि मैं आपकी शाखा को प्रत्येक शाखा के तहत शाखा को दिखाने के लिए संशोधित नहीं करूँगा और प्रत्येक शाखा के सिर के लिए प्रतिबद्ध संदेश की पहली पंक्ति देने के लिए, यह देखने के लिए कि प्रत्येक शाखा क्या इंगित कर रही है, इसे आसान बनाना। शायद प्रत्येक प्रतिबद्धता की तारीख भी। – asmeurer

+2

इसे बेहतर किया जा सकता है ('br' के बजाय' br' और 'चेकआउट' के बजाय' शाखा 'का उपयोग करें, और स्क्रिप्ट को उसी शाखा को न दिखाएं जो आप हैं), लेकिन यह वही किया जो मैं चाहता था, इसलिए मैं करूंगा इसे उत्तर के रूप में चिह्नित करें। शॉर्टकट को हटाने के लिए – asmeurer

3

git show-branch एक अल्पज्ञात लेकिन बहुत उपयोगी है उपकरण जो दृश्यमान रूप से उन कार्यों को दिखाता है जो प्रत्येक शाखा के लिए अद्वितीय हैं। पहले इसे समझना मुश्किल हो सकता है लेकिन एक बार जब आप आउटपुट समझते हैं तो यह काफी उपयोगी है। एक संक्षिप्त लेकिन अच्छा introduction उपलब्ध है।

वर्णन

Shows the commit ancestry graph starting from the commits named 
    with <rev>s or <globs>s (or all refs under refs/heads and/or 
    refs/tags) semi-visually. 

    It cannot show more than 29 branches and commits at a time. 
संबंधित मुद्दे

 संबंधित मुद्दे