假設我有一個包含多個分支的git存儲庫。我懷疑有些分支沒有推上游,或者已經過時,或者兩者(即分歧)。找出哪些本地分支與遠程不同步
有沒有辦法通過一個命令找出哪些分支與遠程不同步? (寫一個腳本是好的,但我想知道是否已經有這樣的腳本)。
假設我有一個包含多個分支的git存儲庫。我懷疑有些分支沒有推上游,或者已經過時,或者兩者(即分歧)。找出哪些本地分支與遠程不同步
有沒有辦法通過一個命令找出哪些分支與遠程不同步? (寫一個腳本是好的,但我想知道是否已經有這樣的腳本)。
我做了一個腳本。原來git branch -v
給出了必要的信息。
〜/斌/ 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
那麼,爲了知道遠程是否發生了變化,至少需要一次git獲取來更新遠程引用。在那之後,git狀態會告訴你,你是在遠程還是在遠程,有多少次提交。
這可以幫助你:git remote show origin
我不知道,但我的作品
它沒有顯示我需要什麼,但事實證明,'git branch -v'。 – Dallaylaen 2012-06-09 11:06:48
項目uncommitted
的This fork你想要做什麼。
是的,這就是我想要做的,只是以一種不太互動的方式。 Git狀態只顯示一個分支,所以我必須遍歷它們,並且可能在這樣做之前隱藏我的本地更改(如果有的話)。 – Dallaylaen 2012-04-18 13:49:36
原來'git branch -v'給出了必要的信息。 – Dallaylaen 2012-06-09 08:57:26