我有一个master分支和另一个名为release/system2的分支。我有几次提交被推送到master分支,两天前,我进行了合并以发布/system2。之后,由于master分支中最新代码中的一些问题,system2破坏了系统。有没有什么方法可以检查两天前哪些提交被合并到release/system2分支中,而忽略在特定日期之前合并的提交?
注意,我认为你问的问题并不完全正确:
有什么方法可以检查两天前将哪些提交合并到release/system2分支中吗
根据您的描述,由于您已经知道是哪个合并导致了问题,我认为您不关心当天可能发生的其他合并(无论是在合并之前还是之后(。我怀疑您真正想要的是隔离在特定合并期间合并的提交。因此,让我们将master
合并为release/system2
创建的合并提交ID称为提交M
。
通过该合并带入release/system2
的所有提交都可以用标识
git log M^1..M
也许同样有助于识别问题文件的是这两个提交的差异(合并提交和合并提交的父级1(。
注意:这假设第一个父级实际上是合并前的release/system2
的早期版本。通常情况下是这样,但也有可能是向后的,例如,如果合并有必须解决的冲突,如果用于解决这些冲突的临时分支从master
开始并在release/system2
中合并,而不是相反,然后如果使用快进合并将该临时分支合并到release/system2
中。如果您在这种情况下,请使用M^2
而不是M^1
。
附带说明:如果您确实想知道24小时内进入分支的每一次提交,您可以将日志命令更改为git log X..Y
,其中X
是您知道的分支上的最后一次提交是好的,而Y
是您确定有问题的第一次提交。我的理解是,你已经知道这一点,X=M^1和Y=M。
按日期范围检查所有数字日志:
git log --pretty=format:"%ad - %an: %s" --after="2016-01-31" --until="2023-03-10"
结果:
Mon Jul 25 22:38:56 2022 +0500 - zakk: implemented mongo altas
Sun Jul 24 23:53:57 2022 +0500 - zakk: implemented mongodb
Sat Jul 23 18:30:32 2022 +0500 - zakk: applied css
Thu Jul 21 21:29:22 2022 +0500 - zakk: fisrt commit
通过格式化日期来检查git日志:
$ git log --pretty=format:"%h - %an, %ar : %s"
结果:
86d00ca - zakk, 3 days ago : implemented mongo altas
987cdb5 - zakk, 4 days ago : implemented mongodb
8f9240b - zakk, 5 days ago : applied css
10f1e4e - zakk, 7 days ago : fisrt commit
注意:这将打印包括commits
和merges
在内的所有日志