Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 找出哪些本地分支与远程分支不同步_Git - Fatal编程技术网

Git 找出哪些本地分支与远程分支不同步

Git 找出哪些本地分支与远程分支不同步,git,Git,假设我有一个带有多个分支的git存储库。我怀疑一些分支没有被推向上游,或者已经过时,或者两者都过时(即分叉) 是否有一种方法可以通过一个命令找出哪些分支与remote不同步?(编写脚本是可以的,但我想知道是否已经有这样的脚本)。为了知道远程是否已更改,您至少需要一个git fetch来更新远程引用。在此之后,git状态将告诉您是否在远程设备后面或前面,以及有多少次提交。这可能会对您有所帮助:git remote show origin我不确定,但它对我有效我已经编写了一个脚本。原来git bra

假设我有一个带有多个分支的git存储库。我怀疑一些分支没有被推向上游,或者已经过时,或者两者都过时(即分叉)


是否有一种方法可以通过一个命令找出哪些分支与remote不同步?(编写脚本是可以的,但我想知道是否已经有这样的脚本)。

为了知道远程是否已更改,您至少需要一个git fetch来更新远程引用。在此之后,git状态将告诉您是否在远程设备后面或前面,以及有多少次提交。

这可能会对您有所帮助:
git remote show origin
我不确定,但它对我有效

我已经编写了一个脚本。原来
git branch-v
提供了必要的信息

~/bin/git-total.sh:

#!/bin/sh

for DIR in "$@"; 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 status只显示一个分支,因此我必须遍历它们,并可能在这样做之前隐藏我的本地更改(如果有的话)。结果是
Git branch-v
提供了必要的信息。它没有显示我需要什么,但结果是
Git branch-v
提供了必要的信息。