所以,
我有以下情况。 github上有原始的回购:Repo A
。另外还有一个包含该回购的一些很好的补充:Repo B
。
所以我分叉了Repo B并添加了一些不错的代码。我创建了一个拉取请求,Repo B
的所有者要求我直接向Repo A
提出拉取请求。
现在的情况如下:
Repo A (original)
|
▼
Repo B (some great features)
|
▼
Repo C (my fork, has some changes that need to go to Repo A directly)
但是我无法直接向只保留我的更改的Repo A
发出拉取请求。原因是我的更改所依据的其他一些更改(Repo B
)。我在创建拉取请求时获得的是对Repo B
所做的所有更改以及我对Repo C
所做的更改。
在github上,由于名称已被使用,我无法创建项目的第二个分支。
那么,我现在该怎么办?是否有一个命令行可以解决这个问题?
答案 0 :(得分:3)
将存储库A作为远程添加到本地存储库:
git remote add repo-a <url>
git fetch repo-a
根据您应该打开拉取请求的分支创建自己的分支。这通常是master
,但请查看README
或CONTRIBUTING
文件以获取相关说明。
git checkout -b my-feature repo-a/master
现在,你正在一个名为my-feature
的分支上(为你所做的事情命名)。使用cherry-pick
获取您在此分支上的提交,其中<hash>
是您提交的哈希:
git cherry-pick <hash>
您现在有一个本地分支准备好提取请求。将该分支推送到您的分支以发布它(假设origin
是您的分支的远程名称):
git push origin my-feature
您现在可以在您的分支上从my-feature
打开一个拉取请求到存储库A中的master
。