我看过很多与此类似的stackoverflow的问题。我已经尝试了许多方法,但仍然卡住了。
我的脚本是这样的:
git fetch --prune
for k in $(git branch --merged| grep -E -v "(^\*|master|dev|release|origin)"); do
if [ -z "$(git log -1 --since='38 week ago' -s "$k")" ]; then
## Info about the branches before deleting
git log -1 --format="%ci %ce - %H $k" -s "$k";
## Delete from the remote
# git push origin --delete "$k";
## Delete the local branch, regardless of whether it's been merged or not
# git branch -D "$k"
fi;
done
我明白:
host:folder user$ clean-up.sh
2018-05-18 14:46:25 -0700 gituser@company.com - 646766c885324b4f298d55604e0aabc2a00fdb58 feature/some-branch
2018-05-16 19:56:56 -0400 gituser@company.com - 4e09733554eaf5e293ca7c668c19ec1395b361f9 some-other-branch
因此,它指出以下两个分支将被删除:
feature/some-branch
some-other-branch
但是这些分支实际上已经被远程删除了,问题是我的本地repo仍然存在它们。我尝试了很多方法来使我的本地repo与远程同步,以便从远程删除的分支也将从本地删除。请问有人知道一个好的解决方案吗?
更好的解决方案是根本不依赖于本地repo,并且能够纯粹地依赖于远程repo清理旧分支。
我尝试过 git remote prune origin,但它没有起作用。