linux – 检查本地git repo是否遥遥领先
我正在开发一个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的某个地方有一个不同的版本,如果分支没有远程跟踪分支,它将返回错误,这可能对您的目的更有用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |