這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
問題
4月份換了一份工作,新工作是使用golang開發。當我在代碼倉庫中fork了一份代碼準備在自己的repo中開發時,發現golang的fork的問題。
源repo:example.com/group/tool.git
fork後: example.com/my/tool.git
於是我使用 go get example.com/my/tool 來下載我的repo準備工作時發現,GOPATH下面依然有group/tool。原因當然是代碼中import包的時候都是這麼使用的:
import "example/group/tool/module"
於是我如果要正常啟動並執行話就得把上面改成:
import "example/my/tool/module"
然後開發完做pull request前又得改回來。這顯然不是正確的工作方式。
解決
有這個問題之後上網搜了一下,顯然不是只有我一個人有這個問題。這篇文章這種情況應該怎麼做,簡單總結一下。
1. fork repo
先fork,得到一個自己的repo : example.com/my/tool.git
2. 下載源repo 代碼
go get example.com/group/tool"
這時候你的GOPATH中已經把所有的代碼和依賴都下載下來了。
3. 添加remote
進入項目的目錄中,為git repo添加remote
cd $GOPATH/src/example.com/group/toolgit remote add fork example.com/my/tool.git
4. push
在前面步驟做完之後,就可以進行代碼修改了,修改之後按照下面的方式push:
git push fork
參考
- http://blog.campoy.cat/2014/03/github-and-go-forking-pull-requests-and.html
- https://splice.com/blog/contributing-open-source-git-repositories-go/