为什么被拒绝的git push不会显示在'git status'中?

为什么被拒绝的git push不会显示在'git status'中?

问题描述:

我正在创建git中的预接收钩子,并且按预期工作。但是,当钩子失败时(即脚本中的验证失败),按预期拒绝'git push',并给出相关的错误消息(错误:未能推送一些裁判......),但'git工作目录中的“状态”不显示任何内容,表明推送失败。为什么被拒绝的git push不会显示在'git status'中?

如果开发人员没有注意到他们的推送失败,他们不会从'git status'的输出中知道有什么问题。

我可以使用什么命令来检查我的所有代码是否被推送?

+1

那么,_git status_用于检查本地回购的状态,_git push_用于使用远程回购。我不确定你的问题的答案是什么,但git按照设计工作。它在您推送时给了您一条错误消息,然后状态正确_for本地repo_。 – TriskalJM

+1

除了@ TriskalJM的评论,如果你有你的本地分支设置为“跟踪”origin/master,那么'git status'将显示你提前计算的提交数和/或在Git的其他Git的记忆值之后'master'(你的'origin/master'是你的Git的内存)。要更新你的Git的内存,运行'git fetch origin',然后'git status'会给你一个准确的(刚才的)count。请记住,当你运行'git push'时,其他人可能推送了新的内容,所以你总是与其他推动的人竞争。谁推最快,赢。 – torek

如果你在master分支,你可以使用下面的命令来检查你的本地master分支的状态是否在你的远程仓库相匹配master

git diff origin/master 

如果有什么区别的推动必须有工作。如果显示了一些不同的文件,推送不起作用或出于某种其他原因(例如新的未定本地代码),您的本地状态与原点(即远程回购)不匹配。

更一般地使用git diff origin/MY_BRANCH如果你想比较你的分支与名称MY_BRANCH