所以我有这个片段,我想用它来过滤掉没有特定前缀并且在 3 个月内没有收到任何提交的分支,以便我以后可以从我们的 Remote 中删除它们。
for k in $(git branch -r | awk -Forigin !'/\/Prefix1\/|\/prefix2\//'); do
if [ "$(git log -1 --before="3 month" $k)" ]; then
echo "$(git log -1 --pretty=format:"%ci, %cr, " $k) $k";
fi;
done
目前的问题是,当我运行它时,我看到在 3 周前、5 个月前、2 个月前、1 个月前等收到提交的分支,我不知道为什么。
但是如果我只运行: git log --before="4 month"--pretty=format:"%ci, %cr, "它按预期工作。
任何人都可以给我任何指导吗?
最佳答案
-1
在 git log -1 [filters] $k
将要 :
git log [filters] $k
因此,如果一个分支在其历史记录中有 3 个月的提交(我猜:你的任何一个分支都有),
git log -1 --before="3 month" $k
将始终显示 1 行——历史上第一个超过 3 个月的提交。您的领导
if [ ... ]
条件永远为真。要解决此问题,您可以限制提交范围以仅选择每个分支的前导提交:
git log --before="3month" $k^..$k
关于git log --before ="4 months"显示 3 周前提交的分支。我究竟做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61585601/