项目结构和提交golang项目

Project Structure and Committing golang projects

TL;DR:为什么我用路径中的网站命名 go 项目,我在该路径中的什么地方初始化 git? ELI5,请。

我很难理解 Go 语言中 file/folder/repo 结构和 projects/apps 约定的基本目的和用途。我看过一些帖子,但它们没有回答我 use/function 的首要问题,我就是不明白。我想需要ELI5。

为什么这么多项目的路径写成:

github.com/project1/goLangProj
gitlab.com/project2/goLangProj2
example.com/hello

为什么项目回购的开始是一个网站?我有点明白,也许有多个项目,它们都将转到这些回购托管站点之一,但我没有完全理解其他目的。这让我很困惑,什么时候我想提交一个项目,然后项目在存储库中被命名,不是吗?我也在某种程度上寻找项目提交之外的用例,就像在想要下载和使用项目的人中一样,两种观点。

除了推理和目的之外,如果我们走到这一步,那么我将在该路径中的哪个文件夹中初始化 git 项目?

如果我可能找不到完整的解释,请与我分享,我会继续,在此先感谢您。

Why do I name projects with a website in the path?

如果您的包与其他人的包具有完全相同的导入路径,那么有人将很难尝试在同一个项目中使用这两个包,因为导入路径不是唯一的。只要每个人都使用等于他们有效“拥有”的 URL 的字符串,例如您的 GitHub 帐户(或实际拥有,例如您自己的域),那么这些名称冲突就不会发生(除了 URL 的所有权可能会随着时间而改变这一事实)。

它还使 go get 您的项目更容易,因为主机位置是导入字符串的一部分。每个使用包的源文件也会告诉您从哪里得到它。这是一个很好的 属性。

Where do I initialize git?

您的项目应该有一些根文件夹,其中包含项目中的所有内容,而不是项目之外的内容。在此目录中初始化 git。如果它是一个 Go 项目,在这里初始化你的 Go 模块也很常见。

您尝试托管代码的位置可能会限制放置 git 根目录的位置。例如,如果在 GitHub 上托管,您推送的所有代码都必须放在存储库中。这意味着您可以将 git 根目录放在包含所有存储库的更高目录中,但没有办法(据我所知)将其实际推送到远程。请记住,您的本地文件系统与远程主机的不同。您可能有一个名为 github.com/myname/ 的本地文件夹,但这并不意味着远程端支持将文件写入这样的位置。