Jos*_*ler 1649 git git-diff git-log
如何查看我所做的任何尚未推送到远程存储库的本地提交?偶尔git status
会打印出我的分支是X提前提交origin/master
,但并非总是如此.
这是我安装Git的错误,还是我错过了什么?
Pet*_*r B 1707
git log origin/master..HEAD
Run Code Online (Sandbox Code Playgroud)
您还可以使用相同的语法查看diff
git diff origin/master..HEAD
Run Code Online (Sandbox Code Playgroud)
cxr*_*reg 666
如果你想看到所有未推送的分支上的所有提交,你可能会寻找这样的东西:
git log --branches --not --remotes
Run Code Online (Sandbox Code Playgroud)
如果您只想查看每个分支上的最新提交以及分支名称,请执行以下操作:
git log --branches --not --remotes --simplify-by-decoration --decorate --oneline
Run Code Online (Sandbox Code Playgroud)
Ben*_*ngs 305
您可以显示本地但不是上游的所有提交
git log @{u}..
Run Code Online (Sandbox Code Playgroud)
@{u}
或@{upstream}
表示当前分支的上游分支(请参阅git rev-parse --help
或git help revisions
了解详细信息).
Chr*_*lma 164
这对我有用:
git cherry -v
Run Code Online (Sandbox Code Playgroud)
如Git所示:查看不在另一个分支中的所有未提交的提交或提交.
Gre*_*ill 63
你可以这样做git log
:
git log origin..
Run Code Online (Sandbox Code Playgroud)
假设这origin
是您的上游的名称,在..
implies 之后HEAD
省略任何修订名称,其中列出了尚未推送的新提交.
tak*_*hin 40
方便的git别名,用于在当前分支中查找未提交的提交:
alias unpushed = !GIT_CURRENT_BRANCH=$(git name-rev --name-only HEAD) && git log origin/$GIT_CURRENT_BRANCH..$GIT_CURRENT_BRANCH --oneline
Run Code Online (Sandbox Code Playgroud)
这基本上是做什么的:
git log origin/branch..branch
Run Code Online (Sandbox Code Playgroud)
但也确定当前分支名称.
Von*_*onC 38
所有其他答案都谈到"上游"(你从中拉出的分支).
但是本地分支可以推送到不同于它所从的分支.
master
可能不会推送到远程跟踪分支" origin/master
".
在上游分支master
可能是origin/master
,但它可以推到远程分支跟踪origin/xxx
,甚至anotherUpstreamRepo/yyy
.
这些是由branch.*.pushremote
当前分支和global remote.pushDefault
值一起设置的.
这是远程跟踪分支寻求unpushed提交时计数:跟踪的一个branch at the remote
在当地的分支机构将被推到.
该branch at the remote
可再次origin/xxx
或甚anotherUpstreamRepo/yyy
.
<branch>@{push}
请参阅commit 29bc885,commit 3dbe9db,commit adfe5d0,commit 48c5847,commit a1ad0eb,commit e291c75,commit 979cb24,commit 1ca41a1,commit 3a429d0,commit a9f9f8c,commit 8770e6f,commit da66b27,commit f052154,commit 9e3751d,commit ee2499f [all all 5月21日2015],并由Jeff King()提交e41bf35 [2015年5月1日] .(由Junio C Hamano合并- -在提交c4a8354,2015年6月5日)peff
gitster
提交adfe5d0 解释:
sha1_name
:实现@{push}
速记在三角形工作流程中,每个分支可能有两个不同的兴趣点:
@{upstream}
您通常从中拉出的点,以及您通常推送到的目的地.后者没有简写,但它有用.例如,您可能想知道尚未推送的提交:
git log @{push}..
Run Code Online (Sandbox Code Playgroud)
或者作为一个更复杂的示例,假设您通常从
origin/master
(您设置为您的@{upstream}
)中更改,并将更改推送到您自己的个人分支(例如,asmyfork/topic
).
您可以从多台计算机推送到您的分支,要求您集成来自推送目标的更改,而不是上游.
有了这个补丁,你可以这样做:
git rebase @{push}
Run Code Online (Sandbox Code Playgroud)
而不是输入全名.
提交29bc885增加:
for-each-ref
:接受"%(push)
"格式正如我们
%(upstream)
"@{upstream}
"为每个参考报告" ",这个补丁添加"%(push)
"以匹配"@{push}
".
它支持与上游相同的跟踪格式修饰符(因为您可能想知道,例如,哪些分支具有要提交的提交).
如果您想查看与您要推送的分支相比,您的本地分支提前/退出的提交数量:
git for-each-ref --format="%(refname:short) %(push:track)" refs/heads
Run Code Online (Sandbox Code Playgroud)
Jus*_*hms 34
你可以试试....
gitk
Run Code Online (Sandbox Code Playgroud)
我知道它不是一个纯粹的命令行选项,但如果你安装它并且在GUI系统上,它是一个很好的方式来查看你正在寻找什么以及更多.
(到目前为止,我真的没有人提到它.)
Aur*_*ien 28
git branch -v
将为每个本地分支显示它是否"未来".
Ola*_*aia 23
我之前做过一次提交,没有被推送到任何分支,也没有被推送到远程或本地.只是提交.没有其他答案对我有用,但有:
git reflog
Run Code Online (Sandbox Code Playgroud)
我找到了我的提交.
CCC*_*CCC 20
我使用以下别名来获取已提交但尚未推送的文件列表(以及状态)(对于当前分支)
git config --global alias.unpushed \
"diff origin/$(git name-rev --name-only HEAD)..HEAD --name-status"
Run Code Online (Sandbox Code Playgroud)
然后就是:
git unpushed
Run Code Online (Sandbox Code Playgroud)
Gio*_*fas 12
我相信最常见的做法是运行如下:
git cherry --abbrev=7 -v @{upstream}
Run Code Online (Sandbox Code Playgroud)
但是,我个人更喜欢跑步:
git log --graph --decorate --pretty=oneline --abbrev-commit --all @{upstream}^..
Run Code Online (Sandbox Code Playgroud)
它显示了来自上游未合并的所有分支的提交,以及上游的最后一次提交(显示为所有其他提交的根节点).我经常使用它,因为我noup
为它创建了别名.
git config --global alias.noup \
'log --graph --decorate --pretty=oneline --abbrev-commit --all @{upstream}^..'
Run Code Online (Sandbox Code Playgroud)
这不是一个bug.您可能看到的是自动合并失败后的git状态,其中提取了远程更改但尚未合并.
要查看本地repo和remote之间的提交,请执行以下操作:
git fetch
Run Code Online (Sandbox Code Playgroud)
这是100%安全的,不会模拟您的工作副本.如果有变化将git status
显示X commits ahead of origin/master
.
您现在可以显示远程但不在本地的提交日志:
git log HEAD..origin
Run Code Online (Sandbox Code Playgroud)
git cherry -v
Run Code Online (Sandbox Code Playgroud)
这将列出您的本地评论历史(尚未推送)以及相应的消息
有一个名为unpushed的工具可以扫描指定工作目录中的所有Git,Mercurial和Subversion存储库,并显示ucommited文件列表和未提交的提交.在Linux下安装很简单:
$ easy_install --user unpushed
Run Code Online (Sandbox Code Playgroud)
要么
$ sudo easy_install unpushed
Run Code Online (Sandbox Code Playgroud)
安装系统范围.
用法也很简单:
$ unpushed ~/workspace
* /home/nailgun/workspace/unpushed uncommitted (Git)
* /home/nailgun/workspace/unpushed:master unpushed (Git)
* /home/nailgun/workspace/python:new-syntax unpushed (Git)
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅unpushed --help
或官方说明.它还有一个cronjob脚本,unpushed-notify
用于屏幕上通知未通知和未刷新的更改.
这对我来说效果更好:
git log --oneline @{upstream}..
Run Code Online (Sandbox Code Playgroud)
要么:
git log --oneline origin/(remotebranch)..
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
751593 次 |
最近记录: |