我的仓库顶层结构如下:
/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!
答案 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”应理解为“通过对给定提交的父母进行递归探查可以达到”