昨天,我发布了一个关于如何将Git存储库从我的一台机器克隆到另一台机器的问题,如何从另一台机器"克隆"?.
我现在能够成功地将Git存储库从我的源(192.168.1.2)克隆到我的目标(192.168.1.1).
但是,当我对文件,a git commit -a -m "test"和a 进行编辑时git push,我在目的地(192.168.1.1)上收到此错误:
git push
hap@192.168.1.2's password:
Counting objects: 21, done.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (11/11), 1010 bytes, done.
Total 11 (delta 9), reused 0 (delta 0)
error: refusing to update checked out branch: refs/heads/master
error: By default, updating the current branch in a non-bare repository
error: is denied, because it will make the index and work tree inconsistent
error: …Run Code Online (Sandbox Code Playgroud) 我在家里的本地网络中的文件服务器上创建了一个裸存储库.在此之后,我将现有存储库的一个分支从我的桌面PC推送到这个新的远程存储库.
推动工作完美,似乎所有数据都到了("git branch -va"给了我正确的数据).但我不能在裸存储库上使用git log或git show.我得到一个:
fatal: bad default revision 'HEAD'
或者根本没有输出
对于裸存储库来说这是正常的吗?有没有可能想象一切?
编辑:现在解决致命错误,但我没有收到"git log"或"git log unstable"的输出.桌面PC上的相同命令完美运行
我的工作git存储库已损坏,它会丢失其中的所有文件,即
$ git log fatal: bad default revision 'HEAD'
$ git status ... told me that all the files are new
但是.git目录确实包含我的对象.
$ du -sh .git 34M .git
$ git count-objects 4151 objects, 32692 kilobytes
$ git --version git version 1.6.0.4
我记得在它出错之前做的最后一件事是在NFS挂载的服务器上创建(clone --mirror)备份存储库.但是,克隆的备份存储库以相同的方式被破坏.
如何恢复我的存储库?
正如您可能已经知道的那样,默认情况下,git不会为新的裸存储库启用reflog更新.问题是,我有一个很长的历史存储库,但它是在我设置标志"logAllRefUpdates"之前创建的,现在我希望其他应用程序的信息能够正常工作.
如何通过对现有存储库进行的最小更改来实现这一目标.一个非常简单的解决方案是推送一个我不想要的新提交(!):-)