2011-10-08 9 views
8

मेरे कार्य प्रवाह:गिट मर्ज (डब्ल्यू स्क्वैश) के लिए कोई gui?

  • गुरु से शाखा अपनी शाखा में
  • काम करते हैं, के लिए प्रतिबद्ध अक्सर (100+)
  • जब काम अपनी शाखा में किया जाता है, अपनी शाखा में मास्टर विलय, सभी को हल संघर्ष।

कोड की समीक्षा के लिए महारत हासिल करने के लिए वापस मिलने से पहले

  • कोड की समीक्षा समय, मैं मतभेद दो सिर और स्क्वैश के बीच दिखाने करने की जरूरत है/ (लगभग 5 प्रतिबद्ध में) मेरी प्रतिबद्ध आयोजन करते हैं। इस कार्य के लिए सबसे अच्छा जीयूआई (क्रॉस-प्लेटफार्म?) क्या है?

  • +1

    मुझे लगता है

    ln -s /Applications/kdiff3.app/Contents/MacOS/kdiff3 /usr/local/bin/kdiff3 

    फिर Git है कि आप अपने जीयूआई diff उपकरण के रूप में kdiff3 उपयोग करना चाहते हैं बताओ कि आपको दो शाखाओं के बीच अंतर दिखाने की आवश्यकता नहीं है, क्योंकि अगर विलय और समीक्षा के बीच मास्टर पर अधिक काम किया जाता है, तो आप उन्हें बाहर करना चाहते हैं। मास्टर पर पेश किए गए किसी भी बदलाव को छोड़कर, बस अपनी शाखा में पेश किए गए परिवर्तनों को दिखाने के लिए बेहतर है। फिर आप समीक्षा करने से पहले तुरंत ऐसा करने के बजाय, किसी भी समय विलय कर सकते हैं। –

    उत्तर

    9

    यह आपके ओएस पर निर्भर करता है (उदाहरण के लिए मैकओ पर गिट टॉवर, एक विशेष जुर्माना जीयूआई है लेकिन एक इंटरैक्टिव रीबेस के लिए कोई विशेष सुविधा प्रदान नहीं करता है)। उस सुविधा के लिए On Windows, there doesn't seem to be any GUI

    सबसे आसान तरीका है एक कोई इंटरफ़ेस, जहां आप एक

    git rebase --interactive --autosquash 
    

    चला सकते हैं क्योंकि आप संदेश के लिए प्रतिबद्ध! स्क्वैश के साथ शुरुआत (जब उन मध्यवर्ती प्रतिबद्ध एक ही काम के बारे में थे) के साथ प्रतिबद्ध
    देखें "को शामिल रहता है Trimming GIT Checkins/Squashing GIT History "।

    +0

    इस आदेश को स्थायी रूप से परियोजना के इतिहास में एक साथ करता कुचलने है, या सिर्फ उन्हें समीक्षा के प्रयोजनों के लिए इस तरह से प्रदर्शित? –

    +1

    @JonathanHartley यह करता छुटकारा पाने जाएगा, लेकिन एक बार आप हैं, वे कुचल के लिए प्रतिबद्ध की जरूरत नहीं है आप रीसेट कर सकते हैं। – VonC

    0

    लिनक्स पर, गिट के लिए मेरे दो पसंदीदा जीयूआई gitg और meld हैं। अपने मामले में कोड समीक्षा के लिए सही अंतर प्राप्त करने के लिए, gitg लॉन्च करें और उस मास्टर में नवीनतम प्रतिबद्धता प्राप्त करें जिसे आपने विलय किया है (महत्वपूर्ण रूप से, यदि आप पिछली बार विलय कर चुके हैं तो मास्टर के उन्नत मास्टर के खिलाफ आप अंतर नहीं करना चाहते हैं)। इस SHA1 कॉपी करके उसे में डाल अपने git difftool:

    git difftool -t meld <SHA1> 
    

    यह सेट करने के लिए ताकि आप, difftool के रूप में हर समय मिल जाएँगी निर्दिष्ट करने के लिए की जरूरत नहीं है बस config में सेट:

    git config --global diff.tool meld 
    
    0

    ग्रहण तुलना भाग कर सकते हैं। आप प्रोजेक्ट पर राइट क्लिक कर सकते हैं और

    Team->Advanced->Synchronize With...->(branch you want to compare against) 
    

    जो आपको 2 शाखाओं के बीच अंतर दिखाता है। हालांकि, न तो गिट और न ही कोई गिट जीयूआई जो मुझे पता है स्क्वैशिंग काम करता है जो आईएमएचओ बहुत खराब है।

    तो मैं एक (मामले में मैं 3 करता रहा छुटकारा पाने के लिए चाहते हैं के लिए किया था)

    git rebase --interactive HEAD~3 
    

    कर अंत।

    2

    किसी भी 'गिट diff' कमांड का आउटपुट 'git difftool' कमांड का उपयोग करके एक जीयूआई उपकरण में प्रदर्शित किया जा सकता है।

    सबसे पहले, 'diff' कमांड हम चाहते हैं: प्रदर्शन हर द्वारा शुरू की संचित डिफ 'mybranch' पर प्रतिबद्ध है, क्योंकि यह 'गुरु' से अलग का उपयोग कर:

    git diff master...mybranch 
    

    या

    git diff master...HEAD 
    

    ध्यान दें कि इस दौरान मास्टर पर होने वाली किसी भी काम को शामिल नहीं किया गया है, जो शायद आप चाहते हैं कि आप मेरी ब्रांच की समीक्षा कर रहे हों।

    तो mybranch अपने वर्तमान मुखिया है, तो यह संक्षिप्त जा सकता है:

    git diff master... 
    

    Git आठ के बारे में जाना जीयूआई टूल की सूची में से एक में diff आदेशों से उत्पादन फीड होगा, 'Git difftool' का उपयोग कर। मैं ओएसएक्स पर केडीएफ 3 का उपयोग करता हूं, और अतीत में मैंने इसे लिनक्स पर भी खुशी से इस्तेमाल किया है। मैं kdiff3 पसंद करता हूं क्योंकि यह मुझे आवश्यक होने पर 3-तरफा विलय करने देता है, और यह मुझे मैन्युअल रूप से विलय के आउटपुट को संपादित करने के साथ ही शिकंजा का उपयोग करने के लिए चुनने देता है।

    पहले, kdiff3 स्थापित फिर अपने पथ पर यह करने के लिए एक सिमलिंक जोड़ें। मेरे लिए, कि था:

    git config --global merge.tool kdiff3 
    

    तो यह अपनी डिफ देखने:

    git difftool master... 
    
    संबंधित मुद्दे