首页 > 解决方案 > 分叉存储库上的“go build”问题

问题描述

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

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


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

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

在此处输入图像描述

标签: go

解决方案


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

你可以通过

解决方案 1

  1. 下载您通过以下方式分叉的原始存储库:

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

  1. 将你的叉子添加为远程

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

  1. 您必须在原始下载的 repo 的文件夹中进行更改,并在您的 fork 中进行推送和拉取。

git pull --rebase awesome-you-fork

git push awesome-you-fork

解决方案 2

解决方法 go 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 ./...

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


推荐阅读