2015-01-05 111 views
-2

据称,如果用户创建了非裸存储库并通过发出git status来检查状态,他会看到没有要提交的文件;那么另一个用户可以将文件推送到非裸存储库,以便创建该存储库的第一个用户再次发出git status命令并且将找到不同的对象数据库,这就是为什么在这样的共享中裸存储库是必需的实例! (这是裸仓库可以防止的一个糟糕的场景的例子)Git裸和非裸存储器

我的第一个问题是,如果有人能够提供一个答案,仓库的创建者如何仅仅通过发布git status来查看第二个用户的变化如果他仍然在本地存储库中工作;也就是说,他看出这种差异的唯一途径 - 在他期望的事物和在遥远的事物中的事实 - 之间的区别 - 首先是推动还是试图合并?如果他确实推动或合并,那么说这是git协作的本质是不正确的。我知道我的想法是错误的,但是有人能告诉我我哪里出错了吗?

第二个问题是裸露的和非裸露的存储库是否是2个独立的存储库或两者之间是否存在连接?换句话说,如果一个用户创建一个裸存储库,然后另一个用户克隆它(创建一个非裸存储库),当第二个用户添加并提交文件然后将它们推送到远程服务器时,服务器端发生了什么? (第二个用户)与另一个存储库一起工作?

+1

从概念上讲,您应该将裸露和非裸露的存储库简单地看作同一存储库的旧版本和新版本,然后阅读有关在Git中使用不同版本的存储库可以执行的操作的信息。 –

回答

-1

第二位用户向远程存储库发送新文件后,存储库将变为非裸设备。第一个用户将需要从远程存储库中取出或重新绑定,以使其本地存储库与远程存储库保持同步。如果用户不这样做,他的本地存储库不会“知道”远程更改,其状态将代表远程存储库的早期版本。

+0

你说的话是有道理的,我也明白这一点;不过,我对这篇文章仍然有同样的看法。我不明白“裸”存储库所保存的是什么 - 它是否保存工作目录文件的当前和过去快照(即文件的内容以及何时提交?)。原则上, – WITL

+0

是的,一个存储库将保存所有历史提交和文件内容,除非它们被删除。 –

+0

所以当我和一群开发人员一起工作时,我们都拥有非裸存储库,我们在这里进行更改并保存历史记录,我们如何协调我们不同版本之间的合并 - - 我们不会将数据分别存入我们的本地存储库,做一些合并,然后推动它的目标是快速向前推进(假设我们解决本地rwpository上的冲突)?如果是这样,当我们经历这个过程时,我们使用裸仓库还是非裸仓库? – WITL