这是两个不同的问题,但我认为它们是相关的.
使用Git时,如何找到我在本地提交但尚未推送到远程分支的更改?我正在寻找类似于Mercurial命令的东西hg outgoing
.
使用Git时,如何在执行拉动之前找到远程分支的更改?我正在寻找类似于Mercurial命令的东西hg incoming
.
对于第二种:有没有办法看看有什么可用,然后挑选我想要的变化?
Ric*_*sen 110
从Git 1.7.0开始,有一种特殊的语法允许您通常引用上游分支:@{u}
或@{upstream}
.
模仿hg incoming
:
git log ..@{u}
Run Code Online (Sandbox Code Playgroud)
模仿hg outgoing
:
git log @{u}..
Run Code Online (Sandbox Code Playgroud)
我使用以下incoming
和outgoing
别名来使上述更容易使用:
git config --global alias.incoming '!git remote update -p; git log ..@{u}'
git config --global alias.outgoing 'log @{u}..'
Run Code Online (Sandbox Code Playgroud)
Jor*_*ter 97
Git不能通过网络发送那种信息,比如Hg可以.但是您可以运行git fetch
(更像hg pull
是hg fetch
)从远程服务器获取新提交.
因此,如果你有一个被调用的分支master
和一个被调用的远程origin
,在运行之后git fetch
,你还应该有一个名为的分支origin/master
.然后,你可以得到git log
所有提交的master
需要是的超集origin/master
做git log master..origin/master
.颠倒那两个来反过来.
我的一个朋友David Dollar创建了几个用于模拟的git shell脚本hg incoming/outgoing
.您可以在http://github.com/ddollar/git-utils找到它们.
Gre*_*ill 32
使用"git log origin..HEAD"
使用"git fetch"后跟"git log HEAD..origin".您可以使用列出的提交ID来挑选单个提交.
当然,上面假设"origin"是远程跟踪分支的名称(如果您使用带有默认选项的clone).
rob*_*nst 22
还有这个,用于比较所有分支:
git log --branches --not --remotes=origin
Run Code Online (Sandbox Code Playgroud)
这就是git log手册页中对此的说法:
显示任何本地分支中的所有提交,但不显示原始的任何远程跟踪分支中的所有提交(原始数据没有).
以上是为了outgoing
.对于incoming
,只需交换:
git log --remotes=origin --not --branches
Run Code Online (Sandbox Code Playgroud)
我会做
$ git fetch --dry-run
Run Code Online (Sandbox Code Playgroud)
为hg incoming
和
$ git push --dry-run
Run Code Online (Sandbox Code Playgroud)
对hg outgoing
.
归档时间: |
|
查看次数: |
94932 次 |
最近记录: |