我在家里的本地网络中的文件服务器上创建了一个裸存储库.在此之后,我将现有存储库的一个分支从我的桌面PC推送到这个新的远程存储库.
推动工作完美,似乎所有数据都到了("git branch -va"给了我正确的数据).但我不能在裸存储库上使用git log或git show.我得到一个:
fatal: bad default revision 'HEAD'
或者根本没有输出
对于裸存储库来说这是正常的吗?有没有可能想象一切?
编辑:现在解决致命错误,但我没有收到"git log"或"git log unstable"的输出.桌面PC上的相同命令完美运行
Ric*_*sen 68
是的,这对于新的裸(和非裸)存储库来说是正常的.
HEAD是Git称之为符号引用 - 对另一个引用的引用.
在非裸存储库中,HEAD通常指示当前检出的分支.新提交将导致名为by的分支HEAD被提前引用新提交.当HEAD指的是提交的对象,而不是直接的一个分支,它认为是分离的,这意味着还承诺不会造成一个分支引用先进引用新的提交(危险的,因为检查出不同的提交或分公司将呈现新任何现有引用都无法访问,因此很难找到它们并进行垃圾回收.
在裸存储库中,HEAD指示存储库的默认分支,以便在存储库的克隆中git checkout origin等效于git checkout origin/masterif master是默认分支(git help rev-parse有关详细信息,请参阅参考资料).
当Git初始化一个新的存储库时,它会初始化HEAD为引用refs/heads/master(换句话说,默认情况下HEAD指向master分支).但是,它不会创建一个名为branch的分支,master因为存储库中没有提交master指向的提交.
因此,在您创建master分支或更改HEAD为指向确实存在的分支之前,在运行查看的命令HEAD(例如git log或git show不使用任何参数)时,您将收到该错误.
您仍然可以使用不检查的命令HEAD.例如:
git log some_branch_that_exists
Run Code Online (Sandbox Code Playgroud)
要删除错误消息,您可以执行以下操作之一:
更改HEAD为指向存在的分支:
git symbolic-ref HEAD refs/heads/some_other_branch
Run Code Online (Sandbox Code Playgroud)master从其他位置将新分支推入存储库master在本地创建一个新分支:
git branch master some_existing_commit
Run Code Online (Sandbox Code Playgroud)为了可视化存储库中的所有内容,我使用以下内容:
git log --graph --oneline --date-order --decorate --color --all
Run Code Online (Sandbox Code Playgroud)
请注意,即使HEAD指向不存在的分支,上述命令也将起作用.
| 归档时间: |
|
| 查看次数: |
37981 次 |
| 最近记录: |