【发布时间】:2013-11-07 20:01:48
【问题描述】:
我需要删除远程存储库上的一个分支,该分支较旧且 30 天,并且对当前进程非常慢
目前
git fetch --depth=1
list=$(git ls-remote --heads git@xxxxx.xx.xx.com:/xxx/xxx-xxx/xxx-xxx-a | grep ci)
for i in $list
do
if [ -n "$(git log -1 --before='30 days ago' -s origin/$i)" ]; then
git push origin :$i
echo " Deleted Branch $i"
fi
done
【问题讨论】:
-
我对您的脚本的实际工作方式感到困惑。根据 git 手册页,
git fetch --depth用于浅克隆,但无法从中推送浅克隆! -
@RobinGreen 我不确定这是否重要,因为他只是删除引用(在删除时不需要进行对象的实际传输)。因此,浅层克隆可能会起作用。也就是说,如果分支提示落后,您最终可能仍会传输相当多的数据。
-
为什么需要
git ls-remote? fetching 应该让你所有的远程分支。看起来你的git log正在获取超过 30 天的第一个提交,而不是测试第一个提交是 30 天