列表在给定的Commit ID之前提交

问题描述 投票:2回答:1

我的repo顶级层次结构如下所示:

/dir1
/dir2
/dir3

我在HEADgit 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

但是,地狱,我找不到任何可以帮助输出所有提交UP TO特定提交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/对随后的git log <...> -- dir1/输出没有任何影响。

请帮忙,git大师!

git git-log
1个回答
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中的“可达”应理解为“通过递归探索给定提交的父母可以访问”

© www.soinside.com 2019 - 2024. All rights reserved.