2017-04-17 18 views
0

我有一个软件包,我通过go get github.com/<other_user>/<repository>安装。它缺少一些功能,所以我一直与原作者一起将它们添加到包中。提交对通过“go get”安装的软件包所做更改的请求

我对我的本地副本进行了更改并提交了它们。然后我意识到:derp,我没有授权git push这些更改。

有没有办法让我挽救我的变化,并以某种方式向他提交拉请求?或者是否必须丢失所有更改,分叉他的存储库,重新实施我的更改,然后提交拉取请求?

无论我做什么,有没有办法让我保留执行此命令的能力?

go get -u <original_repository> 

或者我必须成为一名全职撰稿人并不断更新我的分岔库吗?

回答

4

在GitHub中分叉回购,然后将您的分叉作为工作副本中的远程名称添加到非原产地的名称下。 git remote add myfork [email protected]。您可以将更改推送到您的货叉(git push myfork),然后从您的货叉中打开PR到原件。

明确,命令会是这样的后叉你原来给自己的帐户:

git remote add myfork https://github.com/<your_username>/<repository>.git 
git push myfork 

之后,您可以提交PR原件。如果你的PR被接受,你就可以运行这些命令:

git remote remove myfork 
git rebase master 
git pull origin master 

然后,您可以从您的GitHub的帐户中删除你的叉子。之后,go get -u将正常运行。

无论何时您需要对软件包进行新的更改,您都可以重复此过程。

+1

'go get'在本地存在时不会获取任何东西。运行'go get -u'会调用'git pull --ff-only',但它永远不会改变你的远程跟踪分支。 – JimB

+0

嗯,我不确定ff-only是否可以与承诺的本地更改一起工作。只有一种方法来确定! – Adrian

+0

如果当然不起作用,因为如果有变化你不能快进。如果你没有本地分支的跟踪信息(这是分支并将其推送到远程时默认的),但即使你做了也不会做任何事情,因为你是远程分支,它也会失败。你刚才推的同样的东西! – JimB