为了账号安全,请及时绑定邮箱和手机立即绑定

git“更新当前已签出的分支”警告是什么意思?

git“更新当前已签出的分支”警告是什么意思?

Git
慕森王 2019-12-27 10:14:51
当我执行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.我在Google上搜索了此消息,然后发现所有内容都是git邮件列表讨论,作者试图确切确定如何使此消息更好地传达给我,这才是真正的问题。我是怎么引起的,如何解决?
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

当您推送到非裸仓库时,会发生这种情况。裸仓库是仅由.git目录组成的仓库。非裸仓库也包括结帐。通常,您不应推送到非裸仓库。实际上,在git的未来版本中,将禁止这样做。如果您推送到非裸仓库,则该仓库的HEAD将与索引和工作副本不同步。

如果要创建人们要推送到的存储库,则应使用git init --baregit init --bare --shared如果有多个用户帐户需要访问它)git clone --bare来创建它,或者要通过克隆现有存储库来创建它。


查看完整回答
反对 回复 2019-12-27
?
慕姐4208626

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


查看完整回答
反对 回复 2019-12-27
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

我从混乱的仓库中克隆了一个新的裸仓库,以防万一,然后将其替换为克隆的裸仓库,从而使仓库成为裸仓库。

我是git的新手,当我设置代表时,我忘记使用--bare选项。感谢你的帮助!

从那以后,我读了O'Reilly的git书,现在是总git转换了。


查看完整回答
反对 回复 2019-12-27
  • 3 回答
  • 0 关注
  • 856 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信