- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 git log
的参数列出分支上给定范围内的所有提交。 .出于某种原因,它似乎没有给我正确的结果(或者我可能理解错了命令?)。
这是我正在做的步骤:
git clone https://github.com/openstack/nova.git
git log
这些是最后 9 次提交:d5bde44 Merge "Make metadata password routines use Instance object"
6cbc9ee Merge "Fix object change detection"
39b7875 Merge "Fix object leak in nova.tests.objects.test_fields.TestObject"
94d1034 Merge "maint: correct docstring parameter description"
6407f17 Merge "Fix live_migration method's docstring"
7406661 Merge "Fix infinitely reschedule instance due to miss retry info"
9d8a34f Merge "Remove unused code from test_compute_cells"
429cd4b Fix object change detection
01381b8 Fix object leak in nova.tests.objects.test_fields.TestObject
...
01381b8
之后开始所有提交.我发出 git log 01381b8..HEAD
可以看到以下输出:d5bde44 Merge "Make metadata password routines use Instance object"
6cbc9ee Merge "Fix object change detection"
39b7875 Merge "Fix object leak in nova.tests.objects.test_fields.TestObject"
94d1034 Merge "maint: correct docstring parameter description"
6407f17 Merge "Fix live_migration method's docstring"
7406661 Merge "Fix infinitely reschedule instance due to miss retry info"
9d8a34f Merge "Remove unused code from test_compute_cells"
429cd4b Fix object change detection
2214bc0 Remove unused code from test_compute_cells
9639b55 Fix infinitely reschedule instance due to miss retry info
a5184d3 Fix live_migration method's docstring
76729a3 maint: correct docstring parameter description
28224a6 Make metadata password routines use Instance object
最佳答案
这里的问题在于“之后”的模糊概念。
提交与其说是“嵌入在图表中”,不如说是“之前”和“之后”。在这种情况下,由于存储库是可克隆的,所以我克隆了它。显然它相当活跃:
$ git log --oneline -9
77bad25 Merge "Remove deprecated config option names: Juno Edition"
d4d712a Merge "Deprecate instance_get_by_uuid() from conductor"
d5bde44 Merge "Make metadata password routines use Instance object"
6cbc9ee Merge "Fix object change detection"
39b7875 Merge "Fix object leak in nova.tests.objects.test_fields.TestObject"
94d1034 Merge "maint: correct docstring parameter description"
6407f17 Merge "Fix live_migration method's docstring"
7406661 Merge "Fix infinitely reschedule instance due to miss retry info"
9d8a34f Merge "Remove unused code from test_compute_cells"
--graph
记录,它们会是什么样子。添加(我会将数字增加到 10):
$ git log --oneline --graph -n 10
* 77bad25 Merge "Remove deprecated config option names: Juno Edition"
|\
| * d0a02fa Remove deprecated config option names: Juno Edition
* | d4d712a Merge "Deprecate instance_get_by_uuid() from conductor"
|\ \
| * | 1d340cc Deprecate instance_get_by_uuid() from conductor
* | | d5bde44 Merge "Make metadata password routines use Instance object"
|\ \ \
| |/ /
| * | 28224a6 Make metadata password routines use Instance object
* | | 6cbc9ee Merge "Fix object change detection"
|\ \ \
| * | | 429cd4b Fix object change detection
* | | | 39b7875 Merge "Fix object leak in nova.tests.objects.test_fields.TestO
|\ \ \ \
| |/ / /
| * | | 01381b8 Fix object leak in nova.tests.objects.test_fields.TestObject
--graph
修改了遍历,这就是我进行 10 次提交的原因)。
git log
至
git rev-list
.像许多 git 命令一样,
git log
用途
git rev-list
选择要显示的修订。 (一些 git 命令实际上运行
git rev-list
而其他人共享其源代码,但无论哪种方式都一样。)
x..y
是
^x y
的简写(或
y ^x
——这些意思是一样的)。是否写了像
master
这样的名字或
origin/stable/havana
,或间接名称,如
HEAD
,或原始提交 ID,或缩短的原始提交 ID,如
77bad25
,
x
和
y
部分被解析为底层的 git 对象(在我们的例子中应该是一个提交)。您可以使用
git rev-parse
观察解析步骤。 :
$ git rev-parse master
77bad252096f7a4a8174340f0f2a3baf1fd52195
$ git rev-parse HEAD
77bad252096f7a4a8174340f0f2a3baf1fd52195
$ git rev-parse origin/stable/havana
0bf0bb4b5df64f7266c903a986d0b90a1f223822
git rev-list
这样做是从这个提交向后工作以找到它的父提交,然后从这些提交到他们的 parent ,依此类推。结果是一个祖先集。
master
的祖先在这一点上,没有特定的顺序:
master
本身:77bad25...
master
的第一个 parent ,git rev-parse master^1
:d4d712a...
master
的第二个 parent ,git rev-parse master^2
:d0a02fa...
master
的第一个 parent 的第一个 parent ,git rev-parse master^1^1
:d5bde44...
master
的第一个 parent 的第二个 parent ,git rev-parse master^1^2
:1d340cc...
$ git rev-list master | wc -l
27918
git rev-list master
选择所有 2.7 万次提交,以及
git log master
将向您显示所有这些(以某种顺序,根据通过
git rev-list
传递给
git log
的附加选项修改顺序)。
git rev-list
从一些特定的修订开始——例如
01381b8
——并找到它的所有祖先(包括
01381b8
本身):
$ git rev-list 01381b8 | wc -l
27901
master
开始发现的提交少 17 次。并向后工作(并且第二个列表中没有第一个列表中没有的提交)。所以如果你告诉
git rev-list
为了给你“从
master
开始的所有提交,减去从
01381b8
开始的所有提交”,你应该得到 17 个提交:
$ git rev-list master ^01381b8 | wc -l
17
git rev-list master ^01381b8
或等效的
git rev-list 01381b8..master
看到它。)
git log
将显示给你,给定相同的修订范围。
git rev-list
文档和仍然遗漏项目(例如,
--graph
告诉你它“启用父重写”和“暗示
--topo-order
”,直到我刚才检查,我忘记了父重写部分。幸运的是,这不适用于这里无论如何,只需要
--date-order
强制图形版本按日期而不是拓扑排序。)
关于git log 修订范围给出了不正确的提交范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24225832/
不同的 LogCat 方法是: Log.v(); // Verbose Log.d(); // Debug Log.i(); // Info Log.w(); // Warning Log.e();
在android群里,经常会有人问我,android log是怎么用的,今天我就把从网上以及sdk里东拼西凑过来,让大家先一睹为快,希望对大家入门android log有一定的帮助. android
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 社区 12
我正在尝试使用 sonarlint 检查代码质量.上面的问题概要,我不明白为什么它要说要大写。但是 this discussion与上述建议相反。哪一个应该被认为是正确的? 最佳答案 这没有正确答案,
随着 n 变大,log*(log n) 和 log(log* n) 这两个函数会更快吗? 这里,log* 函数是迭代对数,定义如下: 我怀疑它们是相同的,只是写法不同,但它们之间有什么区别吗? 最佳答
作为家庭作业,我被要求在 O(log(n)) 中编写一个算法,我可以计算出我编写的算法的复杂度为 O(log(n) + log(n/2) + log(n/4) + log(n/8) + ... + l
我正在使用 Tomee。日志文件夹包含这样的文件 localhost_access_log.2016-12-02.txt localhost.2016-12-02.log catalina.2016-
Android Log.v、Log.d、Log.i、Log.e 等的 ios 等效项是什么?同样在 android 上,我使用 Android 设备监视器和 logcat 来访问我的手机日志,我需要在
我认为下面的代码是 O(log log n) 因为它里面有 i*i 但我对 log n 感到困惑> 和 log (log n)。 for (i=2; i*i<=number; i++) { if
我正在修改 kvm 模块,并在内核代码中添加了 printk 语句。运行虚拟机后,printk 为我提供了错误地址和有关 guest 操作系统的其他信息。 我需要从这个信息中生成统计信息。当我使用 d
我有一个部署为 Windows Azure Web 角色的 WCF 服务。 我正在使用 Enterprise Library 进行异常处理,并且在我的本地 Development Fabric 中,似
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
在 Go 的生产中使用 log.SetFlags(log.LstdFlags | log.Lshortfile) 是好的做法(至少是一般做法)吗?我想知道在生产中这样做是否存在性能或安全问题。因为它不
我想知道什么更快: double value = Math.log(a) - Math.log(b); 或 double value = Math.log(a/b); 我计算值的方式是否会对性能产生影
我有数百个子例程使用 log.Println() 写入日志文件 我正在使用 log.Println 写入 error.log 文件。 func main() { e, err := os.Open
我将 Nuxt 与 SSR 一起使用,并希望有类似于 apaches 的 access.log 和 error.log 的东西 我特别感兴趣的是每次调用的响应时间。 我在 nuxt 文档中找不到任何内
我知道以前有人问过这个问题,但我相信这是一个不同的问题。 Nginx 在 www-data 下运行: $ ps -eo "%U %G %a" | grep nginx root root
我在我的日志文件中发现了一个非常奇怪的条目 Jan 29 01:35:30 vs-proj-handy sshd[5316]: Received disconnect from 130.207.203
对于我正在开发的应用程序,我希望在开发过程中和发布时简化故障排除。我希望能够检索到对 Log 的调用,以了解在 USB 调试中没有连接手机的情况下运行应用程序时的调用,以便可以检索并发送给我。例如,当
我试图捕获 panic 并记录错误: func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloRep
我是一名优秀的程序员,十分优秀!