git - 更改 git status 比较的分支

标签 git github

当我输入 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..$rightgit 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/

相关文章:

没有用户名的git pull问题

git - .gitattributes中的`* text = auto`和`* text eol = lf`有什么区别?

git - digital ocean ,Ubuntu Droplet - 使 : *** No rule to make target `all' . 停止

jquery - GitHub Slider JQuery 插件

git - 设置 Git、Jira、Jenkins 并了解工作流程

node.js - 发布周期的 Github 结构

git - 如何查看从我的存储库模板 (GitHub) 创建的存储库数量

git - 本地和远程之间的大小写差异

git - 哪些 git 命令执行完整性检查?

git - 如何删除过滤器分支后的旧提交?