背景
假如我们自己封装了一个项目,上传到Gitee或者Github中了,然后想在其它项目中引用这个项目,我们应该怎么做?
一、创建文件夹
首先,就是在创建项目之前,我们要先创建两个文件夹,这两个文件夹需要和你的
Gitee或Github 仓库路径保持一致
。
第一个文件夹就是 Gitee或Github 的域名,
像 Gitee 的就是 “gitee.com”,Github的就是 “github.com”
。
第二个文件夹就是你在 Gitee或Github 上的用户名(个人空间地址上的名称)。
如图:
然后我们就可以创建这两个文件夹了:
创建好这两个文件夹后,就可以在里面创建项目了,我这里是创建了一个go-test项目。
二、打开并初始化mod文件
注意:使用编辑器打开时是打开gitee.com这个给文件夹,而不是项目文件夹。
使用idea打开gitee.com,我们初始化mod文件时,并不是在这个目录下的终端里面初始化。
定位到go-test项目根目录,在这个目录里面打开cmd,在这里面初始化mod,go.mod文件才会生成在这个项目的根目录里面。
这样我们就可以开始封装我们的代码了,测试了没问题就可以上传到仓库里了。
上传到仓库需要注意:
上传上去之后,就像下面这样:
三、打tag和创建发行版
排错
做完了上面两步操作,假如我们就直接在另一个项目引入,执行
go get gitee.com/hanshuangjianke/go-test
的话,是会报错的:
大概意思就是没有找到匹配的版本。
然后我们去创建一个发行版:
再去执行
go get gitee.com/hanshuangjianke/go-test
,发现还是上面那个报错,这是怎么回事?
是我们创建发行版的姿势不对??我去找了下,说是需要打标签,然后我点开标签那个tab,发现有一个标签啊?
然后我查了下,寻思应该在本地打个标签,然后推送到远程去:
第一个命令是执行成功了的,本地打好了标签,然后推送到远程仓库时,提示远程仓库里面已经存在这个标签了。合着我们提交完代码后,不能先急着在gitee上创建发行版?
本地和远程仓库都有了标签,我试着再执行
go get gitee.com/hanshuangjianke/go-test
,还是不行,还是上面那个报错。
然后我用git命令,把本地和远程仓库的标签都删掉了:
分别执行这两个命令:
git tag -d v0.0.1-beta.1 # 删除本地标签 git push origin :refs/tags/v0.0.1-beta.1 # 删除远程标签
之后再用git重新执行
git tag v0.0.1-beta.1
和
git push --tags
这样就执行成功了。
这次再去执行
go get gitee.com/hanshuangjianke/go-test
,怀着忐忑的心情,它终于执行成功了!!!
总结
我们将代码提交到仓库后,需要在本地给这个项目打标签,然后将标签推送到远程。注意不要在远程仓库里面去创建发行版或者标签!!!
直接在项目根目录使用git命令即可:
git tag v0.0.1-beta.1 # 本地打标签git push --tags# 标签推送到远程仓库
如果标签名已经存在了,可以删除掉旧的标签名(本地和远程都需要删除)或者新建其它标签名。
如果是已有的项目想要改成
gitee.com/hanshuangjianke/xxx项目
这种结构的话,需要注意代码中和mod文件中的包路径,将包路径改正确后,提交到仓库,然后就在项目根目录使用git命令创建标签和推送标签。注意标签的提交信息,必须要是你改完包路径后的那次提交,如下图:
包路径不对的话,会有以下问题:
go: gitee.com/hanshuangjianke/go-excel@upgrade (v0.0.1-beta.1) requires gitee.com/hanshuangjianke/[email protected]: parsing go.mod:
module declares its path as:go-excel
but was required as: gitee.com/hanshuangjianke/go-excel
或者
go: gitee.com/hanshuangjianke/go-excel imports
go-excel/excel:packagego-excel/excel is not in std (D:\Java\jdk\Go\src\go-excel\excel)go: gitee.com/hanshuangjianke/go-excel imports
go-excel/excel/model:packagego-excel/excel/model is not in std (D:\Java\jdk\Go\src\go-excel\excel\model)
如果包路径错误,但还是有上面两个问题,检查标签的提交信息是否是正确改好包路径的那一次提交;
标签也正确但还是有上面两个问题,可以在需要引入
go-test
的项目中运行
go clean -modcache
来清除本地的Go模块缓存,或者,删除go.mod和go.sum文件,然后运行go mod init来初始化一个新的模块,接着运行
go get gitee.com/hanshuangjianke/go-test
来获取 go-test 模块。
版权归原作者 符华- 所有, 如有侵权,请联系我们删除。