git的日志,并显示在裸露的回购

我在家里的本地networking的文件服务器上创build了一个裸存储库。 在此之后,我从现有的存储库的一个分支从我的桌面pc到这个新的远程存储库。

推挤工作完美,似乎所有的数据到达(“git分支-va”给了我正确的数据)。 但是我不能在裸仓库上使用git log或者git show。 我得到一个:

fatal: bad default revision 'HEAD'

或者根本没有输出

裸仓库是否正常? 是否有另一种可能性来想象一切?

编辑:致命的错误现在被解决,但我没有收到“git日志”或“git日志不稳定”的输出。 在桌面PC上的相同的命令完美的作品

是的,这对于新的裸机(和非裸机)是正常的。

说明

HEAD是Git所谓的象征性参考 – 对另一个参考的引用。

在非裸存储库中, HEAD通常指示当前哪个分支被检出。 一个新的提交会导致由HEAD命名的分支被提前引用新的提交。 当HEAD直接引用一个提交对象而不是分支时,它被认为是分离的 ,这意味着进一步的提交不会导致分支引用被提前引用新的提交(危险,因为签出不同的提交或分支将呈现新的提交无法通过任何现有的引用,使他们很难find并进行垃圾回收)。

在裸存储库中, HEAD表示存储库的默认分支,因此在存储库的克隆中,如果master是默认分支,请参阅git help rev-parse获取详细信息, git checkout origin等价于git checkout origin/master

当Git初始化一个新的仓库时,它会初始化HEAD来引用refs/heads/master (换句话说, HEAD默认指向master分支)。 但是,它并没有创build一个名为master的分支,因为master的存储库中没有提交指向尚未提交。

因此,直到您创buildmaster分支或将HEAD指向存在的分支,在运行查看HEAD的命令时(例如git log或不带任何参数的git show ),您将看到该错误。

您仍然可以使用不检查HEAD命令。 例如:

 git log some_branch_that_exists 

固定

要摆脱错误消息,您可以执行以下任一操作:

  • HEAD更改为指向存在的分支:

     git symbolic-ref HEAD refs/heads/some_other_branch 
  • 将新的master分支从其他位置推入存储库
  • 在本地创build一个新的master分支:

     git branch master some_existing_commit 

可视化

为了可视化存储库中的所有内容,我使用如下所示:

 git log --graph --oneline --date-order --decorate --color --all 

请注意,即使HEAD指向一个不存在的分支,上述命令也可以工作。

请注意,此消息将随Git 2.6(2015年第3季度)

见Jeff King( peff )的 提交ce11360 (2015年8月29日) 。
(由Junio C gitster合并- gitster -在承诺699a0f3 ,2015年9月2日)

最后,这个信息会更有意义:

log :更清楚地诊断空HEAD

如果您初始化或克隆一个空的存储库,运行“ git log ”的初始消息不是很友好:

 $ git init Initialized empty Git repository in /home/peff/foo/.git/ $ git log fatal: bad default revision 'HEAD' 

让我们来检测这种情况,写一个更友好的信息:

 $ git log fatal: your current branch 'master' does not have any commits yet 

我们还检测到“HEAD”指向一个坏的参考的情况; 这应该更不常见,但很容易看到。
请注意,我们不诊断所有可能的情况。 我们依靠resolve_ref ,这意味着我们不能获得有关复杂情况的信息。 例如,“– --default master ”将使用dwim_ref来查找“ refs/heads/master ”,但是我们只注意到“ master ”不存在。
类似的,像“ --default HEAD^2 ”这样复杂的sha1expression式不会作为ref来parsing。

但没关系。 在这种情况下,我们会回到一个通用的错误信息,而且不太可能被使用。
捕捉一个空的或破碎的“头”提高了常见的情况下,其他案件不倒退。

当我第一次推到回购非主分支时,我遇到了这个错误。

为了解决这个问题,我只好把主人推回回购,就是这样!