当我输入 git status
时,我看到
您的分支已更新为“origin/master”。
如果我有多个 Remote ,并且我想与远程调用“功能”进行比较,我输入 git status 它仍然与 origin 进行比较,该怎么办?有没有一种方法可以让我在输入 git status
时看到
您的分支已更新为“feature/master”。
?
还可以执行类似 git status feature -> 比较本地 master 与 feature/master 或 git status feature1 feature2 -> 比较本地 master 与 feature1/master 和 feature2/master 之类的操作吗?
如果不可能,查看某些远程或分支(即使有两个不同的本地分支)提前/落后的提交次数的最佳方法是什么?我不需要 git diff
因为这给了我太多细节
提前致谢。
最佳答案
松散地基于Show git ahead and behind info for all branches, including remotes ,这是一个 shell 脚本,它应该允许您为任意两次提交显示“ahead ... Behind ...”消息:
file ./ahead.sh :
#!/bin/bash
left=$1
right=$2
leftahead=`git rev-list --count $right..$left`
rightahead=`git rev-list --count $left..$right`
echo "$left (ahead $leftahead) | (behind $rightahead) $right"
用法:
$ ./ahead.sh HEAD origin/master
HEAD (ahead 7) | (behind 0) origin/master
git rev-list $left..$right
显示从(但不包括) $left
的共同祖先开始的提交序列和$right
高达 $right
.
git rev-list --count $left..$right
将简单地计算此序列中的提交次数。
同时使用 git rev-list --count $left..$right
和git rev-list --count $right..$left
,您将获得领先/落后计数(什么是“领先”和“落后”取决于哪个提交作为引用)。
要获取已修改文件的列表(à la git status
),您可以使用 git diff --name-status
:
#!/bin/bash
left=$1
right=$2
leftahead=`git rev-list --count $right..$left`
rightahead=`git rev-list --count $left..$right`
echo "$left (ahead $leftahead) | (behind $rightahead) $right"
git diff --name-status $right $left
更新
如果git diff --name-status
产生太长的输出,寻呼机将启动,并 stash 最初的 ahead | behind
线。这是一个修复,使用 --no-pager
选项:
#!/bin/bash
function displayStatus {
left=$1
right=$2
leftahead=`git rev-list --count $right..$left`
rightahead=`git rev-list --count $left..$right`
echo "$left (ahead $leftahead) | (behind $rightahead) $right"
git --no-pager diff --name-status $right $left
}
displayStatus $1 $2 | less
关于git - 更改 git status 比较的分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25155750/