git"更新当前签出的分支"警告意味着什么?

ski*_*ppy 31 git

当我进行git推送时,我看到以下内容:

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.
Run Code Online (Sandbox Code Playgroud)

我用Google搜索了这条消息,我所能找到的只是一个git邮件列表讨论,作者试图确切地决定如何使这个消息更好地与我沟通真正的问题是什么.

我是怎么造成这种情况的,我该如何解决?

Bri*_*ell 46

当您推送到非裸机时会发生这种情况.一个裸仓库是一个仅由一个.git目录组成的仓库; 非裸仓库还包括结账.一般来说,你不应该推到一个非裸的回购; 事实上,在未来的git版本中,这将被禁止.如果您推送到非裸仓库,那么该仓库的HEAD将与索引和工作副本不同步.

如果您要创建人们想要推送的回购,那么您应该使用git init --bare(git init --bare --shared如果有多个用户帐户需要访问它),或者git clone --bare如果您通过克隆现有仓库来创建它.

  • 实际上,你可以很好地推送到非裸存储库,你只是无法推送到目前已经检出**的一个分支**. (2认同)

Von*_*onC 12

简而言之,您的远程存储库不再是一个裸存储库,而是您推动远程结帐分支.

请参阅" 如何发布Git存储库 ":

裸存储库是没有签出的代码工作副本的存储库.它只包含git数据库.
作为一般规则,您永远不应该进入包含工作副本中的更改的存储库.
为了确保不会发生这种情况,我们将服务器存储库作为一个裸存储库 - 它没有工作副本

这里:

请注意,"推送"的目标通常是存储库(即,没有自己的工作树).
您也可以推送到具有签出工作树的存储库,但推送不会更新工作树.
如果您推送的分支是当前签出的分支,则可能会导致意外结果.

如果定义了分离的工作树(例如,它可以对应于Web服务器的DocumentRoot),则需要:

在远程存储库上检查git config core.worktree和的值git config core.bare


小智 5

我通过克隆一个新的,裸露的存储库使我的存储库裸露出来,保存了混乱的存储库以防万一,并用我克隆的裸存储库替换它.

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

我已经阅读了O'Reilly git书,现在我已经完成了git转换.