3 回答
TA贡献1780条经验 获得超5个赞
当您推送到非裸仓库时,会发生这种情况。裸仓库是仅由.git
目录组成的仓库。非裸仓库也包括结帐。通常,您不应推送到非裸仓库。实际上,在git的未来版本中,将禁止这样做。如果您推送到非裸仓库,则该仓库的HEAD将与索引和工作副本不同步。
如果要创建人们要推送到的存储库,则应使用git init --bare
(git init --bare --shared
如果有多个用户帐户需要访问它)git clone --bare
来创建它,或者要通过克隆现有存储库来创建它。
TA贡献1852条经验 获得超7个赞
简而言之,您的远程存储库不再是光秃秃的存储库,而是您推动了远程结帐分支。
请参阅“ 如何发布Git存储库 ”:
裸仓库是没有签出的代码工作副本的仓库。它仅包含git数据库。
作为一般规则,您永远不应将其包含在工作副本中包含更改的存储库中。
为了确保不会发生这种情况,我们将服务器存储库设置为裸存储库-它没有工作副本
从这里:
请注意,“推送”的目标通常是一个裸仓库(即没有自己的工作树)。
您还可以推送到具有已签出工作树的存储库,但是推送不会更新工作树。
如果您推送到的分支是当前已签出的分支,则可能导致意外结果。
如果定义了分离的工作树(例如,可以对应于Web服务器的DocumentRoot),则需要:
有
post-receive
你的远程仓库挂钩(如一个这里所描述),运行“git checkout -f
”和忽略警告消息(
git config receive.denycurrentbranch ignore
)
在您的远程存储库中检查git config core.worktree
和的值git config core.bare
TA贡献1812条经验 获得超5个赞
我从混乱的仓库中克隆了一个新的裸仓库,以防万一,然后将其替换为克隆的裸仓库,从而使仓库成为裸仓库。
我是git的新手,当我设置代表时,我忘记使用--bare选项。感谢你的帮助!
从那以后,我读了O'Reilly的git书,现在是总git转换了。
- 3 回答
- 0 关注
- 856 浏览
添加回答
举报