gpt4 book ai didi

git - 去,去获取,去安装,本地包和版本控制

转载 作者:IT老高 更新时间:2023-10-28 12:58:20 24 4
gpt4 key购买 nike

我无法理解创建具有本地包的 go 项目的工作流程。

假设我创建了一个新项目,使用 git 进行版本控制,它有一个 main.go 文件和一个 tools.go 文件,它们将在包 utils 中。所以我有一个这样的目录结构:

/myproject/
main.go
utils/
tools.go

main.go 看起来像这样:

package main
import "./utils"
func main() {
utils.DoSomthing()
}

tools.go 看起来像这样:

package utils;
func DoSomething() {
}

使用 go buildgo run 在本地一切正常。但这是托管在 github 上的,我希望能够让其他人使用 go get 命令来安装它。所以本地包导入必须改成使用“github.com/user/project/utils”的格式,这样才有效,除了现在我有两份源代码,真正的问题是那个带有git历史的副本有一个使用下载的副本的导入。因此,如果我正在处理带有 git 历史记录的副本,对 tools.go 所做的任何更改都不会被注意到,因为它将使用下载的副本。

所以我想知道是否有人可以解释在同一个项目中使用 go get、版本控制和包导入的正确方法。

最佳答案

我刚刚写了一个简短的分步指南,说明我如何使用新的 go toolgithub.com .您可能会发现它很有用:

1.设置你的 GOPATH

您可以将环境变量 GOPATH 设置为您喜欢的任何目录。如果你有更大的项目,为每个项目创建一个不同的 GOPATH 可能是个好主意。我会特别推荐这种方法用于部署,这样更新项目 A 的库不会破坏项目 B,这可能需要相同库的早期版本。

还请注意,您可以将 GOPATH 设置为目录列表,以冒号分隔。因此,您可能有一个包含所有常用包的 GOPATH,并为每个带有附加包或现有包的不同版本的项目单独的 GOPATH。

但除非你同时处理许多不同的 Go 项目,否则本地只有一个 GOPATH 可能就足够了。所以,让我们创建一个:

mkdir $HOME/gopath

然后你需要设置两个环境变量告诉go tool它可以在哪里找到现有的 Go 包以及应该在哪里安装新的包。最好将以下两行添加到您的 ~/.bashrc~/.profile (之后不要忘记重新加载您的 .bashrc)。

export GOPATH="$HOME/gopath"
export PATH="$GOPATH/bin:$PATH"

<强>2。创建一个新项目

如果您想创建一个新的 Go 项目,该项目应托管在 github.com稍后,您应该在 $GOPATH/src/github.com/myname/myproject 下创建这个项目。路径与 github.com 存储库的 URL 匹配很重要,因为 go 工具将遵循相同的约定。所以,让我们创建项目根目录并在那里初始化一个新的 git 存储库:

mkdir -p $GOPATH/src/github.com/myname/myproject
cd $GOPATH/src/github.com/myname/myproject
git init

因为我不喜欢输入这么长的路径,所以我通常会在我的主文件夹中为我当前正在处理的项目创建符号链接(symbolic link):

ln -s $GOPATH/src/github.com/myname/myproject ~/myproject

3.编写您的应用程序

开始编码,不要忘记 git addgit commit 你的文件。另外,不要对子包使用像 import "./utils" 这样的相对导入。它们目前没有记录,根本不应该使用,因为它们不能与 go 工具一起使用。改用 github.com/myname/myproject/utils 之类的导入。

4.发布您的项目

创建一个 new repository at github.com ,上传您的 SSH 公钥(如果您之前没有这样做过)并将您的更改推送到远程存储库:

git remote add origin git@github.com:myname/myproject.git
git push origin master

5.继续处理您的项目

如果您在 .bashrc 中设置了 GOPATH 并且在主文件夹中创建了指向项目的符号链接(symbolic link),则只需键入 cd myproject/ 并在那里编辑一些文件。之后,您可以使用 git commit -a 提交更改并将它们发送到 github.com通过执行 git push.

关于git - 去,去获取,去安装,本地包和版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10130341/

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