Git - 查找哪些提交是本地的

时间:2016-12-28 03:20:07

标签: git version-control commit git-commit git-log

我如何知道哪些本地提交不在远程?

By,git log我看到了提交历史记录,但我想查找最后一次提交是否已经推送到服务器或只是本地提交。有没有办法知道没有去服务器和与本地历史匹配?

4 个答案:

答案 0 :(得分:2)

复制最后一个提交哈希,并查看提交存在的分支列表 如果您看到remote/origin/<branch-name>,那么您已推送last commit

$ git fetch
$ git log                                    # copy last commit-hash
$ git branch -a --contains <last-commit-hash>

# Or, (skip copying commit-hash)
$ git fetch && git branch -a --contains $(git rev-list -n 1 HEAD)

答案 1 :(得分:2)

是的,您可以git log origin/master..master查看。

如果有输出,则显示日志是您没有推送到远程的。如果没有输出,则表示您当前的分支与master相同。

注意:如果其他人也使用git遥控器,你最好从原点获取然后进行比较。

答案 2 :(得分:1)

Git有许多快捷方式,例如 HEAD 是指当前分支的提示,而 @ {upstream} 是指远程分支的头部(或最后推送的提交)。例如,这些快捷方式对于在别名中使用非常有用,因此您不会被锁定使用分支名称,如 master 和固定的远程名称,如 origin

使用git log;

git log @{upstream}..HEAD

我使用以下

git config alias.changes "log --graph --abbrev-commit --decorate --date=relative --pretty=terse @{upstream}...HEAD"

然后我只需使用

git changes

列出我当前分支中未推送的更改。

注意:如果 @ {upstream} 似乎不起作用,请注意-u中的--set-upstreamgit push选项1}}。使用git push -u origin master将确保 origin / master 被视为分支 master 的上游存储库。然后 @ {upstream} 快捷方式应该可以正常工作。

答案 3 :(得分:0)

最后我得到了一个线索,

<强> git status

On branch dev
Your branch is ahead of 'origin/dev' by 1 commit.
  (use "git push" to publish your local commits)
nothing to commit, working directory clean

Git状态还显示当前分支从远程提交的提交次数。

感谢@Danh的评论