git中裸共享存储库的概念

use*_*464 7 git repository git-bare

我一直面临着理解裸存储库的困难.我到处都读到共享的回购是一个简单的回购.为什么它必须是一个简单的回购?它不能是合作者克隆然后推/拉的正常回购吗?

Von*_*onC 5

它必须是一个裸存储库,因为非裸存储库将有一个工作树(意味着该存储库的特定版本已签出并且文件可见)。

每次推送到非裸存储库时,您都无法保证其工作树将反映您正在推送的内容,因为默认情况下所述工作树将保持不变。
(想象一下,如果推送会触发工作树的更新:文件会突然更改,而接收端用户没有任何控制)

这就是为什么将裸存储库作为上游存储库(您推送到的存储库)更简单:没有要管理/更新的工作树。

更多信息请参阅“所有关于“裸”存储库的内容——什么、为什么以及如何修复非裸推送”。

它没有签出树,因此它只是执行“服务器”在集中式 VCS 中名义上执行的操作 - 当您推送到它时记录提交、分支等,并在您克隆或拉取时为您提供最新版本从中。