gpt4 book ai didi

Git - 为什么是 "shared repositories should be bare repositories"?这是过时的建议吗?

转载 作者:太空狗 更新时间:2023-10-29 14:25:40 30 4
gpt4 key购买 nike

我是 git 和 Github 的新手。我已经了解了很多术语(推送、 pull 、提交、分支等),但我将主要使用通俗的说法来解释我最初的期望。

我假设过程是:

1.) Create a git repo out of my existing files.
2.) Copy those to my Github account to create a central "hub".
3.) Anyone who works on the project will check it out from Github, do work on their computers, then upload the changes to the hub.
4.) Anyone else working on the same branch can easily upload their changes as well, and will be warned if there are any conflicts. They can also easily download changes since their last download to update their local copy.

所以我执行了第 1 步和第 2 步。我创建了几个分支。我做了一些提交并将更改推送到 Github。我还在另一台机器上克隆了 master 分支,然后从中分支出来。我将新分支推送到 Github。一切似乎都运行良好。但是现在,当我准备将其他开发人员添加到该项目时,我反复收到“中央”存储库应该是“裸机”的警告。

Here , here (“不建议 push 非裸存储库”),以及 atlassian says “中央存储库应该始终是裸存储库”,以及其他几个地方。显然,如果它不是裸露的并且其他人推送了一个新文件,那么我的本地版本会在我推送时认为自己已经删除了该文件。我最终会撤销其他开发人员的工作,这正是我试图用 git 解决的问题!

这让我很担心,因为我已经用一堆文件设置了我的 Github 项目。当我发现一些信息表明使用较新版本的 Git 时,您不需要在集线器上使用裸存储库,这时我正要着手弄清楚谁可以将我的集线器转换为裸存储库。我认为这与 version 2.3 有关更新了 git push 的行为。这是真的吗?为什么?

如果我的本地 Windows 机器的版本是 2.7,但另一台 CentOS 机器使用的是 1.7.1,我该怎么办?

最佳答案

非裸仓库的问题在于它们有一个 check out 分支,如果有人推送到那个分支,那么事情就会变得很奇怪:工作副本和索引将在分支后面。这在正常的工作流程中不应该发生:想象一下,如果在您的非裸主仓库中收到推送的分支后,您进行单行提交会发生什么?您的提交实际上会回滚所有收到的更改,甚至不会向索引添加任何文件。

GitHub 存储库是空的。尽管您可以看到文件和分支,但实际上并没有 checkout 任何内容(您不能直接在 github 分支中提交!)。

关于Git - 为什么是 "shared repositories should be bare repositories"?这是过时的建议吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33682757/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com