列表在给定Commit ID之前提交

时间:2019-04-05 14:04:56

标签: git git-log

我的仓库顶层结构如下:

/dir1
/dir2
/dir3

我在HEAD上,git log --oneline --first-parent -5 -- dir1/给出如下信息:

abcb COMM-25 Fix latest
ba0f COMM-17 Some stuff
cda8 New files
db7c COMM-9 Feature merge
e20a Init smth

网络上有很多很酷的东西,例如git log --oneline --first-parent db7c.. -- dir1/来获得

abcb COMM-25 Fix latest
ba0f COMM-17 Some stuff
cda8 New files

甚至git log --oneline --first-parent db7c..ba0f -- dir1/以限制两端

ba0f COMM-17 Some stuff
cda8 New files

但是,地狱,我找不到任何有助于输出所有提交(直至特定提交ID)的信息。 我需要类似git log --oneline --first-parent ..cda8 -- dir1/的东西才能获得

cda8 New files
db7c COMM-9 Feature merge
e20a Init smth
<...>

仅具有cda8哈希。 上面的最新命令当然是伪代码,并且在现实生活中不提供任何输出(不幸的是:))。

那么,如何在不更改HEAD的情况下,在指定的提交ID(含)之前列出特定目录中的所有提交?

我认为我可以接受修改dir1的内容(仅dir1,不要触摸dir2和dir3!),但是执行git checkout cda8 dir1/git reset cda8 dir1/对随后的{{1}没有任何影响}输出。

请帮助,git gurus!

1 个答案:

答案 0 :(得分:4)

我认为您在这里已经太努力了 ,这就是使您无法看到隐藏在隐患中的解决方案的原因。

您要求的 标准日志行为,只要提供了refspec。从那点起,它将记录所有可访问的提交历史记录 *:

git log --oneline --first-parent cda8 -- dir1/

(请注意,我已经做了您的最后一次尝试,省略了“ ..)应该输出:

cda8 New files
db7c COMM-9 Feature merge
e20a Init smth
...
<follows ALL the rest of commits history (but only those which have modified dir1/)>

* git中的“ reachable”应理解为“通过对给定提交的父母进行递归探查可以达到”