Git扩展 - 个人仓库和中央仓库之间的区别

8

我是git的新手,有些疑惑:将仓库初始化为个人或中央仓库有什么区别?

我猜如果我将其设为中央仓库,则我的团队成员都可以访问它。然而,如果我将其初始化为个人仓库,则只有我能访问它(我的团队其他成员无法访问)。我是正确的吗?

请问有人能否确认我是否正确以及git中个人和中央仓库之间的区别是什么?对于中央仓库,bare是什么意思?


4
你没有使用标准的git术语。"central"或"personal"存储库这样的概念并不存在。对于大多数部分,Git甚至没有内置的访问控制。你指的是使用--bare初始化还是不使用吗? - Chris Hayes
1
我正在使用Git扩展,所以当我尝试初始化代码库时,它会要求将其初始化为个人(非裸体)或中央(裸体)代码库。在括号内,对于中央库,它写着(--bare --shared=all)。 - user304602
1
在这种情况下,裸仓库只是指没有检出工作树;磁盘上存储的只有.git文件夹及其内容。常规仓库已经检出了工作树,这意味着存储在仓库中的文件可供编辑和处理。 - Chris Hayes
3个回答

10

非裸仓库是开发者使用的,其中包含一个被检出的工作副本,即代码直接可用。

对于裸仓库,只有 .git 文件夹的内容存在。这对于向仓库推送/拉取数据很好,但由于明显的原因不适合查看代码或直接操作代码。

所以,当您想要开发内容时,需要使用非裸仓库。当您想要向另一台机器推送时,在该机器上创建一个裸仓库,然后从您的非裸仓库向其推送。如果您使用例如 GitHub,则不需要手动创建该裸仓库 - 您可以在网站上创建它(通常在内部创建空白裸仓库并设置访问控制),然后在本地设置它为远程仓库(存储库的地址会显示,因此您只需复制并粘贴即可)。


据我所理解,第一次创建仓库时最好使用裸仓库。然后团队成员可以将其克隆到本地机器上作为非裸仓库以便进行工作,例如进行更改等等... 最后,当一个团队成员想要提交他的更改以便让团队中的其他成员看到这些更改时,他会提交他的更改。我是对的吗?一旦这些更改被提交,其他团队成员如何更新他们克隆的代码以查看这些更改? - user304602
1
通常我会从一个非空仓库开始,然后独立地在其中进行工作。当需要协同工作时,我会在服务器上创建一个空的裸仓库,并将我的工作推送到其中。 - Simon Richter

4

我认为这两种状态是公共和私有的。

私有。
私有只适用于我自己。将我的代码放在云端很有用,它可以备份,并且我可以将其下载到任何我使用的机器上。

公共。 公共是为了与其他人(“合作者”)分享,他们已在项目中输入了密钥。


3

Git是分布式的。如果允许其他人读取您的repo,他们可以直接从您那里获取/拉取。在这种情况下,您甚至不需要中央repo,而master只是您决定的内容。

Bare repo是位于个人.git存储库中的数据。在您的工作文件夹中,您有实际的数据(如果您是C程序员,则为.c文件)和带有存储库的.git文件夹,该存储库是历史记录和git需要的所有其他数据。Bare不需要“已检出的数据”,因此它只是.git文件。

Bare repo与个人repo相同,反之亦然。例外情况是处理本地数据时,因为bare repo没有它,因为它不需要它。

有多种选项来组织您的repo。 无论如何,每个人都有本地repo。

远程存储库都是裸的,您可以拥有单个远程repo或每个成员都有自己的远程repo,任何人都可以随时查看。 这最后一个版本是GitHub采用的版本,并且第一个使用单个远程的选项是集中式repo(类似于SVN设置)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接