Golang项目托管平台选择:Github还是Gitlab
Golang项目托管平台选择:Github还是Gitlab 随着微软本周收购GitHub, 我想从GitHub转向GitLab,但GitLab上没人关注,是不是就没人能看到我的代码库了?
对此您有什么看法?
如果我去GitLab,您知道怎样才能让人们看到我的代码库吗?
等等,难道没有其他人付费使用GitHub吗?哈哈
更多关于Golang项目托管平台选择:Github还是Gitlab的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
我认为GitHub并非开源项目,但我们仍在使用它。我们需要一个平台,何必去打扰项目所有者呢 😊
使用 Gitea 自托管您的代码。
GitLab 拥有非常出色的 Docker 容器注册表,这对我来说非常实用。但对于我的开源项目,或许应该考虑使用 GitHub……不过 Gitea 曾是个不错的选择。
放松点。收购大约在六个月后才会发生,届时看看你是否还有同样的感受,以及社区在此期间做出了什么决定。我个人认为微软会是一个很好的管理者,我们无需比昨天更加担忧。实际上,担忧更少,因为现在GitHub实际上有了稳定的资金支持。
GitHub!
人们正在转向 GitLab。这毫无道理!
GitLab 也是一个基于 Azure 的网站/平台!
而且我认为, 那些转向 GitLab 的人,并没有任何站得住脚的好理由。
我为什么要为此烦恼呢? 😕
谁在乎所有者是谁呢? 😕
他们之前知道 GitHub 创始人的名字吗? 😕
Gitlab 同样是一个基于 Azure 的网站/平台!
Gitlab 实际上由谷歌云提供支持 为什么以及 GitLab 如何放弃 Microsoft Azure 转向 Google Cloud | VentureBeat
作为故障保护措施,您可以在两个平台上同时托管代码库,将其中一个设为主要版本,另一个作为旧版克隆/镜像。例如在旧版仓库中,可在README文件和描述/标题中添加链接指向活跃代码库。这样无论哪个平台过时/弃用,用户仍能找到您的代码库。
当然,这种方式对go get获取包的方式有所不同,但至少在网页浏览层面,代码库是"可被找到的"。
不要轻信在互联网上看到的一切。
ipinfo 52.167.219.168
{
"ip": "52.167.219.168",
"hostname": "gitlab.com",
"city": "Boydton",
"region": "Virginia",
"country": "US",
"loc": "36.6648,-78.3715",
"postal": "23917",
"org": "AS8075 Microsoft Corporation"
}
多年来我一直更喜欢 GitLab 而非 GitHub,主要是因为 CI 是其服务的原生功能,而不像 GitHub 和 Travis 那样需要依赖外部工具。而且它更加灵活,可以使用任意 Docker 镜像来运行测试。
在 GitLab 中你甚至可以获得项目专属的 Docker 注册表。
相较于 GitHub 的 Pull Request,我也更偏爱 GitLab 的 Merge Request 命名方式,不过这仅仅是名称差异而已。
对我来说更重要的是,我可以在议题中点击按钮,系统就会自动创建带有分支的合并请求,我只需要拉取下来就能开始工作。
还有 WIP 功能也很棒,它能防止意外合并未完成的合并请求。
最后但同样重要的是,我喜欢议题和合并请求采用独立编号系统,并通过前缀进行区分:议题使用 # 号,合并请求使用 ! 号。
根据GitLab维基百科记载:
2018年6月,微软收购竞争对手GitHub导致超过25万个项目迁移至GitLab,这一数据已通过推特验证
GitLab正在为迁移到其平台提供协助和折扣#movingtogitlab。
根据ipinfo显示,GitLab托管在微软网络上52.167.219.168 IP地址详情 - IPinfo.io

从GitHub迁移到GitLab的原因仍然未知
对于Golang项目的托管平台选择,GitHub和GitLab都是优秀的选择。虽然微软收购GitHub引起了一些关注,但GitHub仍然是全球最大的代码托管平台,拥有庞大的开发者社区。GitLab作为替代方案,提供了完整的DevOps工具链,包括CI/CD、容器注册表等内置功能,对于需要一体化开发流程的团队特别有价值。
关于GitLab上代码库可见性的问题,GitLab的可见性设置与GitHub类似:
- 公开仓库:任何人都可以查看
- 内部仓库:组织内成员可见
- 私有仓库:仅指定成员可见
要让更多人看到你的Golang代码库,可以考虑以下策略:
1. 优化项目描述和README
// 在README中展示清晰的代码示例
package main
import "fmt"
func main() {
fmt.Println("这是一个高质量的Golang项目示例")
}
2. 使用GitLab CI/CD展示项目质量
# .gitlab-ci.yml
stages:
- test
- build
golang-test:
image: golang:1.21
stage: test
script:
- go test ./...
- go vet ./...
golang-build:
image: golang:1.21
stage: build
script:
- go build -o myapp
3. 参与GitLab社区
- 在GitLab的议题中帮助解决其他开发者的问题
- 贡献到其他开源项目
- 使用合适的标签和分类
4. 跨平台推广
- 在项目README中同时提供GitHub镜像链接
- 在技术社区分享项目链接
- 确保go.mod文件正确配置
module github.com/yourusername/yourproject
go 1.21
require (
github.com/gin-gonic/gin v1.9.1
github.com/stretchr/testify v1.8.4
)
5. 技术SEO优化
- 使用有意义的仓库名称和描述
- 包含详细的项目文档
- 添加合适的主题标签
GitLab的生态系统虽然用户基数相对较小,但其集成的DevOps工具链对于Golang项目开发非常有利。项目的可见性更多取决于项目质量、文档完整性和社区参与度,而非单纯依赖平台选择。

