2012-04-18 29 views
6

Giả sử tôi có kho lưu trữ git với một số nhánh. Tôi nghi ngờ một số chi nhánh không được đẩy ngược dòng, hoặc đã lỗi thời, hoặc cả hai (tức là phân kỳ).Tìm hiểu xem chi nhánh địa phương nào không đồng bộ với điều khiển từ xa

Có cách nào để tìm ra nhánh nào không đồng bộ với điều khiển từ xa bằng một lệnh không? (Viết một kịch bản là OK nhưng tôi muốn biết nếu có một kịch bản như vậy).

Trả lời

5

tôi đã thực hiện một kịch bản. Hóa ra git branch -v cung cấp thông tin cần thiết.

~/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

Vâng, để biết liệu từ xa có thay đổi hay không, bạn cần ít nhất một lần tìm kiếm git để cập nhật các tham chiếu từ xa của bạn. Sau đó trạng thái git sẽ cho bạn biết nếu bạn đang ở phía sau hoặc phía trước của điều khiển từ xa và có bao nhiêu cam kết.

+0

Vâng, đó là những gì tôi muốn làm, chỉ theo một cách ít tương tác hơn. Trạng thái Git chỉ hiển thị một chi nhánh, vì vậy tôi sẽ phải lặp qua chúng, và có lẽ stash các thay đổi cục bộ của tôi (nếu có) trước khi thực hiện. – Dallaylaen

+0

Tắt 'git branch -v' để cung cấp thông tin cần thiết. – Dallaylaen

4

Điều này có thể giúp bạn: git remote show origin Tôi không chắc chắn nhưng nó làm việc cho tôi

+0

Nó không hiển thị những gì tôi cần, nhưng nó chỉ ra rằng 'git branch -v'. – Dallaylaen

Các vấn đề liên quan