我分叉了一个github存储库并对master分支进行了很多更改。有许多特定于我的要求的更改,如果我提交了所有更改的提取请求,则存储库的原始所有者将不会接受该更改,因为许多更改都特定于我的要求。
但我需要提交一些可能被接受的功能,并且对其他用户也很有用。所以现在我想创建一个新的fork虽然我的帐户中已经有一个forked存储库。而且我不想影响现有的分叉。
在新的fork中,我可以添加特定的更改并使用它创建一个pull请求。
我怎样才能完成它?
答案 0 :(得分:3)
不需要新的叉子!
你没有从fork F请求到原始O,而是从F的分支a到O的分支b!
您创建了一个新的分支(例如,#34; PRQ_feature-您添加的")与原始仓库处于同一级别,然后重新应用您所做的更改并希望分享到此分支。
然后你从这个分支发出拉动请求到原始仓库中的那个。
这实际上符合一般的良好做法:始终为拉取请求创建一个新分支。
代码:
others_username
是您想要贡献的原始存储库的用户名
their_branch
是您要提取请求的回购分支,通常它是默认的master
。
$COMMIT_ID
是您要共享的提交的ID。但是,您可能需要解决合并冲突
您也可以使用rebase而不是cherry-pick,具体取决于您提交的方式和内容
origin
是内部远程名称。您的存储库的引用可能会有所不同,但如果您直接克隆它,那就是默认值。
git remote add other_repo github.com/others_username/project_name
git fetch other_repo
git checkout -b PRQ_new-feature other_repo/their_branch
git cherry-pick $COMMIT_ID
git push --set-upstream origin PRQ_new-feature
在Webinterface中,从分支机构创建拉取请求。
但是你一定要读懂git( not GitHub )分支和分支是如何工作的。
我喜欢" thinklikeagit" (只是谷歌)。