Git应该是一个去中心化的系统,但我在谷歌上找到的所有教程和最佳实践工作流程都建议使用服务器(通常是GitHub,或者设置自己的服务器)
我正在使用git进行小型个人项目(2-3人),在哪里可以找到在团队成员机器之间直接同步更改的最佳实践工作流程。
或者,为什么我应该避免这种情况,而是建立一个“中央”服务器,有什么令人信服的论据?
发布于 2011-05-10 16:33:40
取决于你所说的“服务器”是什么意思。Git在没有中央服务器的情况下会很好地工作,尽管许多团队发现有一个中央存储库是很方便的。
如果你所说的“服务器”指的是“安装服务器软件”,那么git也可以在没有任何特殊软件的情况下,通过ssh或在文件系统上工作(不管是不是中央存储库)。
See this document for possible workflows
具有通用存储库的工作流
许多开发人员使用的工作流程是,所有开发人员将他们的更改“推送”(发送)到一个公共存储库,并从该存储库获取所有更改。如下所示:
获取更改
在这种情况下,中央存储库可以位于其中一台开发人员的计算机上、github上或任何其他位置
使用电子邮件的工作流程
你也可以在没有任何服务器的情况下使用git,只需使用电子邮件。在这种情况下,流程如下所示:
应用更改
这甚至可以通过半自动的方式来完成。
没有中央服务器的工作流程
您可以设置git使用多个“远程”存储库。需要注意的是,对于签出的存储库(也就是某人正在处理的开发人员副本),您永远不应该使用 push。因此在这种情况下,流程将如下所示:
这种工作流程很快就会导致混乱和崩溃。
发布于 2011-05-10 16:38:58
你首先需要做的,是仔细考虑你已经有什么样的工作流程,并配置git来使用它。一旦你启动并运行了一些东西,你就可以对它进行微调。不需要将单独的计算机设置为服务器。如果您习惯于拥有一个中央存储库,那么您需要做的就是创建一个每个人都可以推送到的空存储库。为什么不是在本地网络上?
中央回购:
mkdir foo.git
cd foo.git
git init --bare你的回购:
mkdir foo
cd foo
git init
// add files
git add .
git commit -m "Initial commit"
git remote add origin //path/to/central/repo/foo.git
git push origin master其他回购:
git clone //path/to/central/repo/foo.git现在,任何人都可以直接从主分支进行推送和拉取。这应该足以让您入门了。
发布于 2011-05-10 17:44:11
您不一定需要将副本放在某个物理服务器上,但在某个地方拥有一个“受祝福的”存储库可能会有所帮助--让您的团队中的一个人(可能是轮换的)负责收集和管理即将被视为最终更改的人员的更改。他们可以在通常的存储库中保留一个分支,也可以在本地系统上维护一个单独的存储库来存储主源代码。
作为一个具体的例子,考虑Linux和Linus Torvalds --没有每个人都可以推送到的中央存储库,但是Linus维护了一个存储库,其中包含他认为“就绪”的所有代码(以及其他几个人,对于“就绪”的不同定义,也是如此)。这样,你就有了一个规范的代码定义,并有了一个地方来定义你的版本是什么。
https://stackoverflow.com/questions/5947064
复制相似问题