加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 检查本地git repo是否遥遥领先

发布时间:2020-12-14 02:07:26 所属栏目:Linux 来源:网络整理
导读:我正在开发一个git插件,我需要知道何时可以使用命令行更改本地存储(可以提交更改),提前(可以推送到远程)或后面(可以从远程提取). 这就是我到目前为止所做的事情: 可以提交吗? 如果git diff-index –name-only –ignore-submodules HEAD – 返回一些东西,
我正在开发一个git插件,我需要知道何时可以使用命令行更改本地存储(可以提交更改),提前(可以推送到远程)或后面(可以从远程提取).

这就是我到目前为止所做的事情:

>可以提交吗?

如果git diff-index –name-only –ignore-submodules HEAD – 返回一些东西,
然后是的,有提交的更改.
>可以推吗?

如果git status -sb在其输出中包含前面的单词,那么是,那里
是承诺推动.
>可以拉吗?

还没有实现.

可以提交吗?部分似乎工作正常.可以推吗?仅适用于主分支,这是一个很大的问题.

如何在每个分支上安全地检查git repo是否有更改提交,提交推送或需要git pull?

解决方法

您可以使用 git merge-base和 git rev-parse的组合执行此操作.如果git merge-base< branch> < remote branch>返回与git rev-parse< remote branch>相同的,然后你的本地分支就在前面.如果它返回与git rev-parse< branch>相同,那么你的本地分支就落后了.如果merge-base返回的答案与rev-parse不同,那么分支已经分歧,你需要进行合并.

最好在检查分支之前进行git fetch,否则你确定是否需要拉动将会过时.您还需要验证您检查的每个分支都有远程跟踪分支.你可以使用git for-each-ref –format =’%(upstream:short)’refs / heads /< branch>要做到这一点.该命令将返回< branch>的远程跟踪分支.如果没有,则为空字符串.在SO的某个地方有一个不同的版本,如果分支没有远程跟踪分支,它将返回错误,这可能对您的目的更有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读