git日志向我展示了什么?
我错过了一些东西。我曾经使用Mercurial,并且会使用git日志向我展示了什么?,git,Git,我错过了一些东西。我曾经使用Mercurial,并且会使用hg log查看回购协议的修订历史。简单:显示回购协议中所有的变更集 现在我正在使用git。我对学习这个新工具感到非常兴奋,但我对所看到的git log的内容感到困惑。我做了一些更改并做出了一些承诺。另一个人创建了一个修订版,并已提交。我从他的仓库里取出了。我做了一个git日志,他的变更集(在git中可能称为“提交”)不在列表中。如果我明确列出他的散列号(即,git log),它会显示在顶部。所以它在我的回购协议中是,但我不明白git是如
hg log
查看回购协议的修订历史。简单:显示回购协议中所有的变更集
现在我正在使用git。我对学习这个新工具感到非常兴奋,但我对所看到的git log的内容感到困惑。我做了一些更改并做出了一些承诺。另一个人创建了一个修订版,并已提交。我从他的仓库里取出了。我做了一个git日志
,他的变更集(在git中可能称为“提交”)不在列表中。如果我明确列出他的散列号(即,git log
),它会显示在顶部。所以它在我的回购协议中是,但我不明白git是如何决定在我调用git log
时向我展示它的功能的
我查看了git帮助日志
,但在描述中说它“显示了提交日志”。从我的角度来看,这是不正确的。或者可能是不完整的,因为实际上它显示了其中的一些子集。但我不知道是什么子集,也不知道它如何决定要显示什么
有人能给我解释一下git日志吗
更新
顺便说一句:我尝试的第一件事是——全部,现在我看到很多人都在建议。但这也没有表现出来:
$ git log | grep fb2a17c5fb08498e7f2ab364931fddc379be106f
$ git log --all | grep fb2a17c5fb08498e7f2ab364931fddc379be106f
$ git log fb2a17c5fb08498e7f2ab364931fddc379be106f | grep fb2a17c5fb08498e7f2ab364931fddc379be106f
commit fb2a17c5fb08498e7f2ab364931fddc379be106f
git log
不带任何进一步的显式参数,显示当前已签出的提交的历史记录。如果您想查看其他分支或提交,您必须告诉git log
git log --all
应显示所有分支上的所有修订
有很多很好的教程可以方便地在谷歌上搜索。你说得对——默认情况下,git日志只显示提交的一个子集。默认情况下,git日志仅显示当前分支尖端可见的提交。您朋友的提交尚未在当前分支中,因此它不会显示在git日志中。当您未指定引用或引用集时,git日志有一个隐含参数。这是当前的头。所以
git log
扩展到
git log HEAD
git log HEAD..origin/master
这意味着向我显示从当前头部(您的下一次提交将附加到的位置)可访问的所有提交
为了查看同事的工作,您可以
git log origin/master
假设你们都在使用master,并且已经获取了
在git中,fetch表示从远程获取提交,但不更新任何本地分支git pull
将执行fetch操作,然后将您的分支与其获取的分支合并。获取、检查所做的工作,然后合并或重新设置基础,甚至拒绝使用强制推送所做的工作,这是一个好主意,这取决于具体情况和您的工作流
通常,要查看在抓取后远程执行的操作,您可以
git log ..origin/master
这真的扩展到
git log HEAD
git log HEAD..origin/master
。
运算符是“从此引用中排除可访问的提交”和“从此引用中包括可访问的提交”的缩写。也可以这样写:
git log ^HEAD origin/master
引用开头的^
意味着排除可从此处访问的提交。在这种情况下,它意味着你可以从你所在的地方获得什么。结果将是刚刚从服务器获取的该分支上的提交列表
您可以使用--all
参数,而不是将所有分支和远程分支列为git log
的参数:
git log --all
它将显示所有分支(本地和远程跟踪)和标记可访问的所有提交
git log
是一个非常强大的命令,因为它允许您对希望看到的提交进行基于集合的缩减<代码>。
是一种很好的语法。还有…
,它说要包括从指定的两个分支到它们的共同祖先的提交
这种历史的漫游使git如此强大,能够支持如此多有趣的工作流
更新:
当git遇到与其父级存储在树中的内容相同的提交时,它在执行合并时不会列出提交
git log --all --sparse
不会排除这些提交
请参阅的历史简化部分
这也可能意味着您重置了一个分支,或者您的朋友重置了分支,而再次获取已丢失该引用。当您使用sha1执行git日志时,如果您向其添加--decoration,输出是什么?另外,请尝试使用git log--walk reflogs
当处于分离头部模式时,您没有当前分支。谢谢您的回答。我更新了这个问题——注意git日志——all没有显示我正在寻找的版本。当我显式地将其传递给log时,它会显示出来。git log有时会隐藏相同的提交。如果树是相同的,它不会列出它。添加--sparse
参数也可以列出它们。我不相信我可以解释git log
,但我已经将git gl
化名为git log--graph--all--decoration--sparse
。这使得功能接近Mercurial的hg gl
,但与graphlog扩展不同。