在git repo中调用meld
时,我会在meld打开之前收到一堆警告:
# from within a git repo :
$ meld .
fatal: bad revision '^origin/branch/one'
fatal: bad revision '^origin/branch/two'
fatal: bad revision '^origin/branch/three'
...
这只是STDERR
上打印的警告,meld
之后运行正常,并显示预期的差异。
这些分支中的大多数都有本地结帐,但origin
上没有匹配的远程引用
其中一个引用甚至不存在于本地(它是远离现有分支的一个拼错)。
有人知道我可以处理这些可耻的消息吗?
答案 0 :(得分:1)
问题出在我的回购配置中。
一些当地分支机构仍在跟踪过时的远程分支:
.git/config
文件仍包含以下部分:
[branch "branch/one"]
remote = origin
merge = refs/heads/branch/one
即使远程分支branch/one
不再存在,我的本地参考origin/branch/one
已被(正确)删除。
我没有找到任何直接命令来清理我当地的分支机构
我希望git remote prune origin
能够清理它,但事实并非如此。
这是我发现让我的本地分支机构停止跟踪陈旧的远程分支的方法:
# enumerate all local branches, and print "branchname upstreamname" :
git for-each-ref --format="%(refname:short) %(upstream:short)" refs/heads |\
# keep branches which track a remotre branch in origin :
grep "origin/" |\
# loop on output :
while read local remote; do
# use any command which fails on an invalid ref :
git show $remote -- > /dev/null
# if it failed : stop tracking this stale remote
if [ $? != 0 ]; then
git branch $local --unset-upstream
fi
done