我先装的 git 和 GitHub 桌面端,在 Terminal 中输入 git status
也能看到目前有多少个 commit 尚未 push。
但自从昨天晚上手贱装了 SourceTree 后,输入 git status
看不到尚未 push 的 commit 数量了:
如上图,输入 git status
无提示,但是 git push origin master
是有未提交的 commit 的。
卸掉 SourceTree、清掉 ~/.gitconfig 中 SourceTree 的相关配置仍无济于事。
虽说 commit 后 push 就行,但看不到状态心里很是不舒服,请问这该怎么解决啊?
从未想过 Git 会有这方面的问题,原以为只要 git status
就一定能看到未推的提交数目,看了你的问题之后尝试重现却未果,所以我只能猜测了:
我觉得会不会是 Git 的版本问题?因为 SourceTree 默认使用的是它自己的 Embedded Git
,而我每次都会把他改成我自己安装的最新版 Git,所以我从未碰到过这个问题。(详见 SourceTree 的 Preferences)
而楼主你以前可以,用了 SourceTree 之后却不行了,那么合理的解释是 SourceTree 更改了默认的 Git,我不知道它是怎么改的,也许它把内嵌的 Git 的路径优先级提高了。
So,如果是我的话,先看下系统里有几个可用的 Git,使用最新版本的试一试看。或者 Homebrew 装一个最新版的看看。如果新版能够恢复正常,那我的猜测就应该十有八九了。于是你也就知道怎么解决了吧?
如果问题确定,再装上 SourceTree 也应该无碍,只需要去更改一下它的设置,用你安装的新版 Git,而不是默认的内嵌式 Git。
===补充===
#6 楼应该是正解。
git status 本来就不是看有多少个 commit 没有 push 过去的,人家是看本地的 working copy 的状态的,比如有哪些改动没有 commit。。。
是不是没有 tracking remote branch? 如果下面返回的是空是就是没有 tracking
git config --get branch.master.remote
#12 楼 @RainFlying 无力吐槽……我那个项目同时改了多个文件;为了截图所需,我先 stage 了几个已经改好的文件,然后 commit,因此本地会领先 origin/master 1 个 commit。
你看到的 not staged 的部分是剩下的还没改好,尚未准备提交的部分。如果我把它们提交了,就会显示领先 origin/master 2 个 commits 了。
兄弟,Git 基本功不够扎实啊,自己试验下(别忘了 tracking)再说吧。
多谢 @doitian @nightire @RainFlying,多谢大家。
Git 是要多看看资料
输入 git config --get branch.master.remote
查看确实没东西,配置后再查看 status 还是没提示,要不咱先不纠结这个
先这样吧
我把原来的 1.8.3 的 Git 通过 Homebrew 卸掉后就再也装不上了,cw 也没用,浏览器里可以下,brew install git
就是提示下载失败。然后用 MacPorts 装上了 1.8.4 的,一看竟然成中文了哈哈。