该主题的问题与 gitguys.com 似乎声称的内容有关,以解释在多个用户使用 NON-NARE 存储库(http://www.gitguys. com/topics/shared-repositories-should-be-bare-repositories/)
在上述网页中解释说,如果有人创建了一个非裸 git 存储库,其中 git 存储库用户和远程用户都在更新 git 对象数据库。非裸 git 存储库的创建者将使用 git status 命令一分钟看看这个: $ git status
# On branch master
nothing to commit (working directory clean)
下一分钟,远程用户可以 git 将更改推送到非裸存储库中。然后,当非裸 git 存储库的创建者键入 git status 时,git 会找到一个不同的对象数据库,并为这次运行 git status 给出不同的结果。我知道: 除非用户更改了工作目录或其对象数据库中的文件,否则 git status 的输出不应更改!
我觉得这“很难解释”,因为这个陈述是为什么在多个用户共享该存储库的中央存储库环境中应该使用裸存储库(与非裸存储库相反)的基本原理。这句话对我来说似乎不正确,因此很难解释为什么在多用户开发环境中需要裸存储库。这是不正确的,因为它暗示 GIT 状态受服务器存储库状态的影响,而我认为/相信 git 状态仅考虑本地 .git 文件对象和工作目录(即,不在服务器上)
请注意,我一直在试图解释为什么裸存储库是必需的,而不仅仅是认为裸存储库有利于共享环境——但到目前为止我还没有取得太大的成功(包括在这个网站中,也许是因为我没有正确地提出手头的问题;我希望这次我能正确地提出问题)
有人可以解释一下,即使在处理具有多个用户的非裸存储库(假设 2 个用户:用户 A 和用户 B)时,例如,用户 A 在发出 git status 时可能会因为更改而得到 2 个不同的结果,然后是用户 B 的 git push