2014-10-29 6 views
6

मेरे पास मेरे गिट में कई रिमोट जोड़े गए हैं। प्रत्येक रिमोट एक डेवलपर के लिए एक भंडार है। हर दिन मैं fetch --all देखता हूं कि वे जो भी नई शाखाएं बनाते हैं, वे समीक्षा करने के लिए तैयार हैं।गिट fetch करते समय स्थानीय गिट में कॉपी की जा रही कुछ शाखाओं/टैग को अनदेखा कैसे करें - सभी

हालांकि, डेवलपर्स "निजी" शाखाओं को रिमोट पर धक्का दे सकते हैं। कहें, अंडरस्कोर उपसर्ग वाले नाम की सभी शाखाएं समीक्षा करने के लिए तैयार नहीं हैं, जबकि अन्य शाखाएं समीक्षा के लिए तैयार हैं।

git fetch --all करते समय, मेरा गिट ग्राफ (/libexec/git-core/git-gui द्वारा) सभी शाखाओं को कोई फर्क नहीं पड़ता कि उनके पास अंडरस्कोर उपसर्ग है या नहीं। यह ग्राफ को जटिल बनाता है।

मैं git fetch चाहते अपने स्थानीय Git करने के लिए डाउनलोड होने से उन _XXXX शाखाओं की अनदेखी करने के।RemoteA/Branch1, RemoteB/Branch1, RemoteB/Branch2

  • शाखाओं की उपेक्षा:

    • शाखाओं शो: तो जब मैं Git ग्राफ देखने यह की तरह हैRemoteA/_Branch2, RemoteB/_Branch3

    मैं यह कैसे कर सकते हैं?

  • उत्तर

    5

    बजाय एक '_' नामकरण परंपरा का उपयोग करके, आप नामस्थान इस्तेमाल कर सकते हैं, में शाखा धक्का origin/review/Branch1 (git push Branch1:review/Branch1)
    (नाम "समूह" in that answer, या "श्रेणीबद्ध शाखा का नाम (स्लैश के साथ शाखा नाम) that answer में)

    git fetch +refs/heads/review/*:refs/remotes/origin/review/* 
    

    केवल अन्य सेशन:

    इस तरह, आप केवल लाने के लिए क्या "समीक्षा 'नाम स्थान में है

    • सूची दूरस्थ शाखाओं (कुछ भी प्राप्त करने में कठिनाई के बिना):: सही नाम के साथ प्रत्येक शाखा के लिए git ls-remote origin
    • , fetch only that branch
    +0

    लेकिन सभी रिमोट के लिए कैसे करें? गिट fetch + refs/head/review/*: refs/remotes/origin/review/* का अर्थ है कि मुझे 'मूल' को प्रतिस्थापित करने के लिए कमांड में रिमोटए टाइप करना होगा। कुछ भी समान है लेकिन काम के लिए? –

    +0

    @palazzotrain आपको अपने सभी रिमोट ('गिट रिमोट' द्वारा सूचीबद्ध) पर लूप करने की आवश्यकता है: आसानी से स्क्रिप्ट योग्य। – VonC

    2

    आप एक में यह कर सकता है tion एक स्क्रिप्ट है, जो होगा उपनाम के साथ कदम। अपने ~/.gitconfig फाइल करने के लिए इस जोड़ें:

    [alias] 
        fall = !sh -c 'git fetch --all && git branch -r | sed /HEAD/d | grep /_ | xargs git branch -dr' -- 
    

    और फिर बस git fall का कहना है। यह /_ वाली सभी दूरस्थ शाखाओं को हटा देगा।

    आप शैल आदेशों वाले उपनामों की जटिलताओं का निरीक्षण कर सकते हैं। : -/

    +0

    यह एक और अच्छा विकल्प लगता है। +1 – VonC

    -1

    आप ignore-refs विकल्प इस्तेमाल कर सकते हैं:

    git fetch --ignore-refs branch123 
    
    +0

    मैं इस पोस्ट के बाद जारी किए गए गिट 2.8.4 का उपयोग कर रहा हूं, लेकिन मेरे पास 'ignore-refs' विकल्प नहीं है। मैंने कुछ गूगलिंग किया, और मेरे पास केवल एक ही संदर्भ है [गिट svn' के लिए हैं।] (Http://git.661346.n2.nabble.com/PATCH-git-svn-Allow-certain-refs-to -be-ignored-td6867817.html) – Michael

    3

    एक विशेष "समीक्षा" फ़ोल्डर साथ VonC's answer पर विस्तार, आप अपने .git/config रिमोट के अपने सहकर्मियों के लिए प्रविष्टियों 'संशोधित कर सकते हैं।इधर, the relevant documentation.

    कहाँ यह एक बार

    [remote "fred"] 
        url = something.git 
        fetch = +refs/heads/*:refs/remotes/fred/* 
    

    था आप

    [remote "fred"] 
        url = something.git 
        fetch = +refs/heads/review/*:refs/remotes/fred/review/* 
        fetch = +refs/heads/other_pattern/*:refs/remotes/fred/other_pattern/* 
        fetch = +refs/heads/specific_branch:refs/remotes/fred/specific_branch 
    

    को बदल सकते हैं ऐसा करने के बाद, आप refs को आप पहले से ही लाई गई संदर्भ को साफ करने के लिए हो सकता है है, लेकिन भविष्य git fetch --all एस या git fetch fred एस आपके द्वारा निर्दिष्ट पैटर्न के बाहर कुछ भी अपडेट नहीं करेगा।


    या के रूप में कई विशेष या दिलचस्प फ़ोल्डरों/शाखाओं आप की जरूरत के रूप में।

    +0

    मेरे उत्तर में दिलचस्प जोड़। +1 – VonC

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