2015-12-14 6 views
8

मुझे कैसे पता चलेगा कि कोई शाखा (या प्रतिबद्ध) SourceTree में विलय हो गई है या नहीं?सॉर्सेट्री: पता लगाएं कि कोई शाखा विलय हो गई है

जब gitk --all का उपयोग करना, इसके लिए दिखाएगा एक प्रतिबद्ध (या शाखा) foo अन्य सभी शाखाओं, जहां foo पहले से ही में विलय कर दिया गया है।

स्पष्टीकरण के लिए मेरा क्या मतलब है स्क्रीनशॉट: घुमावदार (लाल) क्षेत्र उन सभी शाखाओं को दिखाता है जहां वर्तमान प्रतिबद्धता का हिस्सा है। क्या यह SourceTree में भी प्रदर्शित किया जा सकता है?

Screenshot of gitk

+0

तो आप इसे खोजने का कमांड लाइन तरीका जानते हैं, लेकिन विशेष रूप से सॉर्सेट्री में ऐसा करने का कोई तरीका ढूंढना चाहते हैं? मुझे नहीं लगता कि इसमें यह सुविधा है। – tom

+0

हां! (खैर, गिटक वास्तव में अंतर्निहित गिट गुई है, लेकिन यह इस पहलू को छोड़कर sourcetree से कम लगता है ...) –

उत्तर

7

But maybe it is easier after all to not use SourceTree for that feature

आप एक कस्टम क्रिया SourceTree में परिभाषित का उपयोग करें और उन का विलय कर दिया शाखाओं लिस्टिंग कर सकते हैं।
यह गिटक के रूप में एकीकृत नहीं है, लेकिन कम से कम, आपको उपकरण स्विच करने की आवश्यकता नहीं है।

पहले परिभाषित एक custom action, using $SHA for getting the selected commit:

Custom action

यह में एक स्क्रिप्ट बुलाना चाहिए अपने %PATH% बुलाया git-bm (this answer as an example देख)

#!/bin/sh 
for branch in $(git for-each-ref --format="%(refname:short)" refs/heads/); do 
    if [ "${branch}" != "$1" ]; then 
    t=$(git for-each-ref --format="%(refname:short)" --merged "${branch}" refs/heads/|grep -v "${branch}"|grep "$1") 
    if [ "${t}" != "" ]; then 
     echo "${branch}" 
    else 
     t=$(git branch --contains "$1" | grep "${branch}") 
     if [ "${t}" != "" ]; then 
     echo "${branch}"  
     fi 
    fi 
    fi 
done 

कि सभी शाखाओं सूची जाएगा जिसमें से आप उपयोग कर सकते हैं वर्तमान SHA1 (जो कहने के लिए "सभी शाखाएं जिनमें वर्तमान शाखा विलय हो गई है")

(नोट: सिंटैक्स git for-each-ref --merged केवल गिट 2.7.0 में - 4 जनवरी, 2016 में पेश किया गया है।उदाहरण "Is it possible to filter out merged branches in git for-each-ref?")

के लिए देखें तो प्रतिबद्ध पर यह आह्वान आप चाहते हैं:

invoke custom action

और तुम शाखाओं की सूची उपलब्ध करवाई जाएंगी यह में विलय कर दिया गया है

list

यह एक कामकाज है, लेकिन कम से कम आप SourceTree नहीं छोड़ते हैं।

+0

दुर्भाग्य से, मुझे पता चला कि यह सब के बाद काम नहीं करता है। मैं सभी शाखाओं को दिखाना चाहता हूं, इस शाखा को विलय कर दिया गया है, न कि दूसरी तरफ। (उदाहरण के लिए, यदि मैं वर्तमान शाखा को मास्टर में विलय करता हूं, तो आपके समाधान के साथ यह सूची में "मास्टर" नहीं दिखाएगा)। Gitk इस सही ढंग से ... –

+0

@ JanRüegg ऐसा करता है की तरह (छद्म सिंटेक्स) कुछ: 'प्रत्येक शाखाओं के लिए: (Git शाखा abranch --merged | ग्रेप currentBranch)' – VonC

+0

@ JanRüegg मैं एक स्क्रिप्ट के साथ जवाब संपादित किया है जो सूचीबद्ध करना चाहिए "इस शाखा में सभी शाखाएं विलय हो गई हैं"। क्या आप इसका परीक्षण कर सकते हैं? यह मेरी तरफ काम करता है। – VonC

7

SourceTree में gitk --all चलाने का बराबर चयन करने के लिए किया जाएगा ऊपरी बाएँ कोने में ड्रॉप-डाउन सूची से सभी शाखाओं:

View All Branches in SourceTree

ग्राफ दिखाती है कि कौन शाखाओं को विलय कर दिया गया है, जहां gitk की तरह है।

:

हालांकि, बाहर बिल्कुल जो शाखाओं वर्तमान में मिला दिया गया खोजने - और अधिक आसानी से कमांड लाइन से किया जाता है, जैसा कि आप को बोल सकते हैं - कि शाखाओं जिसका सुझाव दिए गए हैं पहुंच योग्यHEAD से है

git branch --all --merged 
:
git branch --merged 

यदि आप चाहते हैं, आप भी दूरस्थ शाखाओं सूची में--all विकल्प जोड़कर शामिल कर सकते हैं

पता लगाना जो शाखाएं हैं वर्तमान एक में विलय कर दिया नहीं किया गया बस के रूप में आसान है:

git branch --no-merged 
+0

आपकी मदद के लिए धन्यवाद! मैंने स्क्रीनशॉट के साथ इस सवाल को स्पष्ट किया, यह दिखाने के लिए कि किस प्रकार का गिटक मैं SourceTree में "ढूंढना" चाहता हूं। लेकिन हो सकता है कि उस सुविधा के लिए sourcetree का उपयोग न करें, जैसा कि आपने वर्णन किया है ... –

+0

जैसा कि दूसरे उत्तर के लिए टिप्पणी में उल्लिखित है, यह काम नहीं करता है! मैं जानना चाहता हूं कि कौन सी शाखाएं वर्तमान शाखा में विलय कर दी गई हैं, न कि दूसरी तरफ! –

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