分叉存储库中"go build"的问题

Mot*_*ish 2 go

我为GitHub repo(go代码)构建了一个二进制文件,工作正常.没有问题.我分叉了那个repo,并修改了HTML文件中与GO代码无关的单行,为新的分叉存储库构建了二进制文件但是它生成的二进制文件引用了原始的repo代码,无法理解为什么.

我甚至使用go clean -i all命令清除了所有代码并手动删除了所有已安装的代码,来自$ home/go/bin和repo目录的二进制文件,但它仍然引用原始的repo代码而不是新的分叉代码.


根据Tobias建议的解决方案,我执行了以下步骤: 在此输入图像描述

之后,我go build在该repo目录中执行,但新的二进制文件仍然引用旧代码.我甚至删除了旧的二进制文件并生成了一个新文件.

在此输入图像描述

Tob*_*eel 5

这是一个常见的问题."基于位置"的引用系统,因此它在"正确"路径中搜索这些文件.Idk如果去模块解决了这个问题,但至少在不使用go模块时你必须解决它.

你可以解决它

解决方案1

  1. 下载您分叉的原始存储库:

去获取http://github.com/awesome-org/tool

  1. 将fork添加为远程

git remote添加awesome-you-fork http://github.com/awesome-you/tool

  1. 您必须在原始下载的仓库的文件夹中进行更改,然后在您的前叉中进行Push/Pull.

git pull --rebase awesome-you-fork

git push awesome-you-fork

解决方案2

go get get:你创建原始repo将拥有的路径,但是将你自己的fork克隆到它中.这样你就可以推动你的叉子.这可能是更好的解决方案

cd $GOPATH
mkdir -p {src,bin,pkg}
mkdir -p src/github.com/awesome-org/
cd src/github.com/awesome-org/

git clone git@github.com:awesome-you/tool.git # OR: git clone https://github.com/awesome-you/tool.git
cd tool/
go get ./...
Run Code Online (Sandbox Code Playgroud)

这些解决方案可以在这里找到:http://code.openark.org/blog/development/forking-golang-repositories-on-github-and-managing-the-import-path