1

我需要删除远程存储库上的一个分支,该分支较旧和 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
4

1 回答 1

0

虽然origin/XY称为远程分支,但它仍然是存在于本地存储库中的分支。它之所以称为远程分支,是因为它表示该名称的远程存储库分支所在的状态。因此,它确实是一个普通指针,指向应该完全包含在本地存储库中的提交历史记录。

虽然git ls-remote可能能够告诉您远程存储库中存在哪个分支,但这并不意味着您将在本地存储库中拥有必要的数据来显示有关它的任何信息。请记住,所有操作(除了实际的传输操作,如 fetch/pull 和 push)都是在本地执行的。

因此,为了能够调用git log,您将需要获取属于该远程分支历史记录的所有提交对象。您这样做的方式是简单地使用git fetch从远程存储库中获取对象。没有其他方法可以做到这一点。

因此,如果您想访问远程存储库的日志,则必须克隆它以在本地获取信息。

另一种选择是在远程计算机本身上执行此操作,或者具有例如向您显示日志的 Web 界面(gitweb、GitHub 等)。

于 2013-11-07T23:08:54.670 回答