我克隆了一个git存储库
git clone xyz.git
git日志生成整个提交列表。
我想只查看自克隆存储库以来添加的提交。
有没有办法实现这个目标?
答案 0 :(得分:1)
“克隆后”很难甚至不可能,这取决于您在克隆后立即保存的信息,或者自那时起已经存在多长时间。但它也不是有用的,所以它有多困难并不重要:“自克隆以来”是一个错误的问题。 (对于一个非常有缺陷的类比,想象一下试图抓住逃脱的动物。有趣的问题不是三周前的地方,而是现在的地方。)
如果你有一个简短的名字,比如origin
,对于另一个有另外一个包含提交的Git存储库的网址 - 有趣的问题不是我有什么,他们有当我跑git clone
时没有回来?而是我有什么他们没有我最后一次看到他们有什么? 是Git会回答的一个问题,因为你的Git会在你的存储库中记录你上次连接它们时所记录的内容。
如果您的Git从他们的分支master
获得了分支master
,那么您的Git也会记住“master
所在的位置,我们最后一次与他们交谈“。该内存存储在origin/master
中。因此,您可以运行:
git log origin/master..master
表示“显示我在master
上的内容,而不是origin/master
上的内容”。
如果你跑:
git fetch origin
(你可以随时做),告诉你的Git:在origin
连接到另一个Git,然后拿起他们拥有的任何新项目,并更新我的{{1} }和其他origin/master
远程跟踪分支名称。
同样,当你跑:
origin/
告诉你的Git:在git push origin master
连接到其他Git,给他们新的提交,然后让他们将他们的 origin
设置为相同的作为我master
的事情。如果他们 - master
的另一个Git - 同意更新他们的主人的请求,那么你的Git会记录你的origin
,因为你的Git知道他们的Git已经更新。
答案 1 :(得分:0)
@torek提出了一个很好的观点,即在存储库被克隆时告诉它是很棘手的。但是,在远程分支和本地分支之间获取提交列表非常容易。
使用
git log HEAD...origin/your_branch
HEAD
是您当地分支机构当前所在的位置。
origin/your_branch
是repo具有远程分支的提示
来自git help log
页面:
git log [<options>] [<revision range>] [[--] <path>...]
<revision range>
Show only commits in the specified revision range. When no <revision range> is specified, it
defaults to HEAD (i.e. the whole history leading to the current commit). origin..HEAD
specifies all the commits reachable from the current commit (i.e. HEAD), but not from origin.
For a complete list of ways to spell <revision range>, see the Specifying Ranges section of
gitrevisions(7).