2017-04-17 47 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