我如何知道哪些本地提交不在远程?
By,git log
我看到了提交历史记录,但我想查找最后一次提交是否已经推送到服务器或只是本地提交。有没有办法知道没有去服务器和与本地历史匹配?
答案 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-upstream
或git 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的评论