如何在不获取存储库的情况下git记录远程分支

时间:2013-11-07 20:01:49

标签: git shell

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

1 个答案:

答案 0 :(得分:0)

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

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

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

因此,如果要访问远程存储库的日志,则必须克隆它以使信息在本地可用。

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