新手问题 安装 Bitbucket 的 SourceTree 桌面端工具后输入 git status 始终看不到需 push 的 commit 次数

Ju2ender · 2013年08月31日 · 最后由 nightire 回复于 2013年09月02日 · 8862 次阅读

我先装的 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 楼应该是正解。

#1 楼 @nightire 谢谢你,我重新装下 git 试试。这么晚了你也还没睡啊 :)

git status 本来就不是看有多少个 commit 没有 push 过去的,人家是看本地的 working copy 的状态的,比如有哪些改动没有 commit。。。

#3 楼 @RainFlying 事实上真的可以,见图,输出结果第二行:

#4 楼 @nightire origin/master 是本地 copy 啊

是不是没有 tracking remote branch? 如果下面返回的是空是就是没有 tracking

git config --get branch.master.remote

#5 楼 @xstmjh 是本地拷贝啊,但依然显示了你本地的 commits 是否领先/落后于远程的 commits,楼主要的就是这个呗,有何问题?

如果你的考虑是多人协作的话这个可能会不准确,那也没关系,你可以在查看之前 git pull 就行了。

#6 楼 @doitian 试了一下,我觉得你是对的。

#7 楼 @nightire 他说要看的是尚未push的 commit 数量,跟本地比除非你每次都 fetch 才有意义

#9 楼 @xstmjh 是的,如果多人协作的话,不经常 fetch 的确会不准,但是——尚未 push 的数字并不需要 fetch 才知道,只要看看和上次 push 之后的对比就可以了,刚好 git status 可以做到这一点。换言之,我并不需要知道我对比的数字准不准,我需要知道的是距离我上次 push 到现在,本地有多少 commits 尚未 push,这一点是完全可以做到的。

#4 楼 @nightire 看描述。not staged for commit, 这部分代码没有 commit,所以 status 显示本地 working copy 的改动,跟有没有 push 到远程没有关系。

working copy ---> staging area ---> commited --> pushed 只要 git commit 了 git status 就不会显示。

#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 的,一看竟然成中文了哈哈。

#14 楼 @Ju2ender 设置下 tracking branch:

git branch -u origin/master

#13 楼 @nightire 确实无力吐槽啊。上的图让人以为是 not stage 的状态了,恩,其实也是我没看到图片说明部分。我猜楼主肯定是 git remote add 之后用的是 git push 而不是 git push -u

@doitian @nightire @RainFlying 改为 HTTPS 方式就看到了,SSH 方式不行。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号