客户端和服务器的 Git 分支结构

5 git git-branch

对于我的一个 CS 课程,我和一个小组正在使用客户端/服务器架构编写一个应用程序。我很好奇在 Git 存储库中组织项目的最佳实践是什么。我的意思是,我们是否应该像这样构建目录:

ProjectDir/
    Clients/
        Client1/
            # files...
        Client2/
            # files...
    Server/
        files....
Run Code Online (Sandbox Code Playgroud)

并跟踪同一个 git 分支上的所有内容,或者我们是否应该为客户端和服务器创建单独的分支,例如:

在分支上Server

Project/
    Server/
        # files...
Run Code Online (Sandbox Code Playgroud)

在分支上Clients

Project/
    Client1/
        # files...
    Client2/
        # files...
Run Code Online (Sandbox Code Playgroud)

我不知道它是否有很大的不同,但这将是我使用 git 进行的第一个项目,其中团队由几个人组成,我想确保拉取和合并尽可能简单...

kel*_*oti 5

我不确定你的背景是什么,但我听到来自 SVN 等中央 VCS 的人一遍又一遍地问同样的(类似)问题。SVN(集中式)和 Git 分支之间的根本区别在于,相比之下,Git 分支非常轻量且容易。毕竟,在 Git 中,分支只不过是一个带标签的提交(并且该提交指向一个提交,该提交又指向一个提交,一直向下直到分支汇聚)。

在 SVN 中,通常将完全独立的项目作为单独的子目录托管在同一存储库中。这些不是分支,但在 SVN 中它们看起来与分支没有什么区别(在 SVN 中分支只不过是子目录)。但是,您应该了解什么是分支。分支是同一软件的两个近似副本,它们正在并行修改和开发。如果您不确定是否有分支,请问问自己这些分支是否会或可能会聚合。如果让分支聚合永远没有意义,那么它们可能根本就不是分支。

在您的客户端-服务器程序中,我建议您的客户端和服务器不是分支。相反,它们是单独的存储库。如果您希望单独查看它们的历史记录,请将它们放在单独的存储库中。如果您想一起查看它们的历史记录,请将它们放在同一个存储库中但位于不同的目录下。

Git 的一个有趣的功能是,由于它的分布式特性,您可以在单独的存储库中维护客户端和服务器,然后将它们作为不同的分支推送到同一存储库中。除了疯狂地试图理解之外,没有什么区别。