git“更新当前检出分支”警告是什么意思?
当我执行git push时,我看到以下内容:
warning: updating the currently checked out branch; this may cause confusion,
as the index and working tree do not reflect changes that are now in HEAD.
我搜索了这条消息,我所能找到的只是一个git邮件列表讨论,作者试图准确地决定如何更好地将这条消息传达给我,让我知道真正的问题。
我是如何造成这种情况的?如何解决这个问题?
发生这种情况时,你推动到一个非裸露的回购。 裸露的repo是一个完全由.git
目录组成的库。 非裸回购还包括结账。 一般情况下,你不应该推到非裸回购; 实际上,在未来的git版本中,这将被禁止。 如果您推送到非裸回购,那么回购的HEAD将与索引和工作副本不同步。
如果你正在创建一个人们想要推到的git init --bare
,那么你应该使用git init --bare
(和git init --bare --shared
如果多个用户账户需要访问它)来创建它,或者git clone --bare
如果您是通过克隆现有的回购库来创建它的话。
简而言之,您的远程存储库不再是一个简单的存储库,并且您正在推送远程检出分支。
请参阅“如何发布Git存储库”:
裸仓库是没有签出工作副本的代码。 它只包含git数据库。
作为一般规则,您绝不应将其推入包含工作副本更改的存储库中。
为了确保不会发生这种情况,我们将服务器存储库设置为裸存储库 - 它没有工作副本
从这里:
请注意,“推送”的目标通常是裸仓库(即没有自己的工作树)。
您也可以推送到具有检出工作树的存储库,但工作树不会通过推送进行更新。
如果您推送到的分支是当前签出的分支,这可能会导致意外的结果。
如果定义了分离的工作树(例如,它可以对应于Web服务器的DocumentRoot),则需要:
post-receive
钩子(像这里描述的那样),运行“ git checkout -f
”和 git config receive.denycurrentbranch ignore
) 请检查您的远程存储库中git config core.worktree
和git config core.bare
我通过克隆一个新的,裸露的存储库,从而将我的存储库裸露出来,为了以防万一,保留了这个混乱的存储库,并用我的克隆裸机替换它。
我是git的新手,当我设置了repsitory时,我忘记使用--bare选项。 感谢你的帮助!
我已经阅读了O'Reilly的git书,现在我已经完成了git convert。
链接地址: http://www.djcxy.com/p/49017.html上一篇: What does git "updating currently checked out branch" warning mean?