当我尝试以下任何一个命令时:
git branch
git branch -a
git pull
git log --pretty=format:"%C(yellow)%h%Cred%d\\ %Cblue[%cn]\\%Creset %s" --decorate --graph
git log --online --decorate --graph
我收到错误
fatal: Reference has invalid format: 'refs/heads/master~'
但以下命令有效:
git log --oneline --graph # removed --decorate
git log
运行
find ./ -iname "*conflict*"
不会返回任何结果。
find ./ -name "*master*" | grep "\./\.git"
的输出是
./.git/logs/refs/heads/master
./.git/logs/refs/heads/master~
./.git/logs/refs/remotes/origin/master
./.git/refs/heads/master
./.git/refs/heads/master~
./.git/refs/remotes/origin/master
不知道这是否有帮助,但我在那里看到master~
。
知道可能出错的是什么?我可以为您提供哪些其他信息?
答案 0 :(得分:13)
看起来某个实用程序已创建具有尾随.git/refs/heads/...
字符的普通分支文件(~
)的“备份”。 Git中不允许使用分支名称,因为它们会与后缀表示法...~N
冲突以获取祖先。
不需要查询所有引用的命令(例如git log master
没有--decorate
)正在运行,但任何试图列出所有分支的命令都会阻塞无效的分支名称。
只需删除文件./.git/refs/heads/master~
(备份后),你应该好好去。
答案 1 :(得分:2)
我认为您的.git / HEAD文件包含无效内容。检查此文件,如果内容附加了波形符,请将其删除。例如,我的一个存储库:
$ cat .git/HEAD
ref: refs/heads/master
.git中的一些文件是指向其他引用的指针。 Git读取它们,取消引用内容并将其用作对象引用继续。
可能是错误发生在服务器端 - 所以你也应该检查一下。
答案 2 :(得分:2)
您找到的文件与git无关 - 它们是在没有~
的情况下打开文件名时由编辑创建的。
只需删除它们,如果您希望将来阻止此问题,只需将编辑器配置为而不是在与您正在编辑的文件相同的目录中创建交换/备份文件。