2012-04-18 10 views
6

के साथ समन्वयित नहीं हैं मान लीजिए कि मेरे पास कई शाखाओं के साथ एक गिट भंडार है। मुझे संदेह है कि कुछ शाखाओं को ऊपर की ओर धक्का नहीं दिया गया था, या पुराने हैं, या दोनों (यानी अलग हो गए हैं)।पता लगाएं कि कौन सी स्थानीय शाखाएं दूरस्थ

क्या यह पता लगाने का कोई तरीका है कि कौन सी शाखाएं एक कमांड के साथ रिमोट के साथ सिंक हो रही हैं? (एक स्क्रिप्ट लिखना ठीक है लेकिन मैं जानना चाहता हूं कि पहले से ही ऐसी स्क्रिप्ट है या नहीं)।

उत्तर

5

मैं एक स्क्रिप्ट किया है के लिए यह काम करता है। git branch -v बदलता है आवश्यक जानकारी देता है।

~/bin/git-total.sh:

#!/bin/sh 

for DIR in "[email protected]"; do 
    # Only git dirs interesting 
    [ -d "$DIR/.git" ] && cd "$DIR" || continue 

    # git branch -v gives ahead/behind info 
    # using perl - sorry for this 
    MOD=`git branch -v | perl -wlne '/^..(\S+)\s+([a-f0-9]+)\s+(\[ahead\s+(\d+)\])/ or next; print "# Branch ahead: $1"; '`; 

    # a series of UGLY HACKs to get pretty-printing 
    [ ! -z "$MOD" ] && MOD=" 
$MOD" 
    git status | grep -q '^# Changes' && MOD="$MOD 
# Uncommitted changes present" 

    # print summary 
    [ ! -z "$MOD" ] && echo -e "$DIR:$MOD" 
    cd - 
done 
0

ठीक है, यह जानने के लिए कि रिमोट बदल गया है या नहीं, आपको कम से कम एक गिट लाने की आवश्यकता है ताकि आप अपने रिमोट संदर्भों को अपडेट कर सकें। उस गिट स्थिति के बाद आपको बताएगा कि क्या आप रिमोट के पीछे या आगे हैं और कितने काम करते हैं।

+0

हां, मैं यही करना चाहता हूं, बस एक कम इंटरैक्टिव तरीके से। गिट स्थिति केवल एक शाखा दिखाती है, इसलिए मुझे उनके माध्यम से फिर से शुरू करना होगा, और संभवतः ऐसा करने से पहले मेरे स्थानीय परिवर्तन (यदि कोई हो) को रोक दें। – Dallaylaen

+0

'गिट शाखा -v' बाहर निकलता है आवश्यक जानकारी देता है। – Dallaylaen

4

यह आपकी मदद कर सकता है: git remote show origin मुझे यकीन है कि नहीं हूँ, लेकिन मुझे

+0

यह मुझे दिखाता नहीं है कि मुझे क्या चाहिए, लेकिन यह पता चला है कि 'गिट शाखा -v' करता है। – Dallaylaen

1

परियोजना uncommitted की This fork आप क्या चाहते हैं नहीं करता है।

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