我正在开发一个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不同,那么分支已经分歧,你需要进行合并.
原文链接:https://www.f2er.com/linux/440304.html最好在检查分支之前进行git fetch,否则你确定是否需要拉动将会过时.您还需要验证您检查的每个分支都有远程跟踪分支.你可以使用git for-each-ref –format =’%(upstream:short)’refs / heads /< branch>要做到这一点.该命令将返回< branch>的远程跟踪分支.如果没有,则为空字符串.在SO的某个地方有一个不同的版本,如果分支没有远程跟踪分支,它将返回错误,这可能对您的目的更有用.