git - 当前的 git 分支是领先还是落后?
问题描述
我正在使用一个脚本(如下)来修改我的提示,以告诉我当前分支以及它是否与远程分支匹配。我正在根据分支名称做出关于差异是否意味着本地副本领先或落后的假设,但我希望有一种真正的方法来确定这一点。注意:git 版本 1.8.3.1 (RHEL7)。
#!/bin/sh
exec 2>/dev/null
bname=$(git branch | awk '$1 == "*" {print $2}')
[ "${bname}" = "" ] && exit 0
rmtname=$(git rev-parse --abbrev-ref @{u} | sed 's/\// /')
if [ "${rmtname}" != "@{u}" ] ; then
rmthash=$(timeout 10 git ls-remote ${rmtname} | cut -f1)
lclhash=$(git rev-parse HEAD)
fi
if [ "${rmthash}" = "" ] ; then
status="[unknown]"
elif [ "${lclhash}" != "${rmthash}" ] ; then
if [ "${bname}" = "develop" ] ; then
status="[behind]"
else
status="[ahead]"
fi
fi
echo " (${bname}${status})"
示例提示(当前、需要拉取、需要推送):
asw-dev:~/workingpool (develop) :
asw-dev:~/workingpool/acropolis (develop[behind]) :
asw-dev:~/workingpool/moira (im-123[ahead]) :
(括号中的部分是这个脚本的输出)
注意:任何解决方案都需要适合在输入每个命令后运行(例如,运行不能花费 10 秒)
PS,我查看了关于 SO 的几个问答,但它们要么是针对更新版本的 git,要么对于像我这样的 git newb 来说是不可理解的。
解决方案
推荐阅读
- reactjs - React中数据模型或模型数据中的“模型”是什么意思?
- excel - 工作表更改在这么多行之后停止工作
- matlab - 索引超过数组元素数 (5)
- javascript - 如何将波斯数字转换为英文
- python - Python - 从另一个 .py 文件导入类时遇到问题
- opengl - 在三角形顶点的精确坐标上渲染一条线的行为是什么
- julia - Julia 布尔数组之间的入口操作
- c++ - 嘿伙计们,试图从使用 std::chrono 的时间中减去持续时间,我在搞砸什么?
- android - 如何将跨度应用于整个 Spannable 字符串
- python - 如何使用 SimpleITK 将自定义过滤器函数(一些 lambda)应用于 2D 图像对象?