我已经将GitHub存储库 A 的浅克隆(分支)到我自己的存储库 B 中。因此,没有针对B的提交历史记录。但是,我想添加到B中的仓库A中有一个未合并(打开)的 pull请求 X ,它显示为适当的合并拉取请求,但没有添加额外的分支和添加的提交历史记录。 (X基于分支 Z 上回购 C 中特定的 commit Y )
如何使用CLI中的git进行此操作?
鉴于合并 pull-request (来自A)和选择 commit (来自C)的看似等效,我想应该有几种不同的方法可以完成一样。
我已经看过许多类似的问题,但是它们并没有完全解决该问题,因为它们通常涉及首先以各种方式来获取所有提交,或者是不完整的。我看过:
答案 0 :(得分:0)
这就是我的方法。
从本地存储库中提取所有必需的更改:
git pull
。
更改来源 URL:
git remote set-url origin https://url.com
。
将要推送代码的分支切换到:
git checkout BRANCH
或git checkout -b BRANCH
(我总是对此感到困惑)。
(可选)设置上游:
git branch --set-upstream-to=origin/BRANCH
藏匿处:
git stash
提交更改:
git commit -m "feat: moving branch"
最后将其全部推送:
git push
希望这会有所帮助。让我知道是否有任何问题。
答案 1 :(得分:0)
实际上,我要的是cherry picking
一次提交。
但是,由于我自己的 shallow 存储库B
和Y
中原始的C
提交历史有所不同,因此可能(?)使其具有外观的外观,就像“适当的合并拉取请求” 一样,至少在显示的GitHub Network
图的意义上没有。
(如果有人对此有其他解决方案,请发表评论。)
该过程已被很好地记录下来,在这种情况下,最简单的解决方案是:
git fetch git@github.com:<USERNAME>/<REPO-C> <BRANCH-Z> --no-tags
git cherry-pick <commit-Y>
git push origin master
这是迄今为止最简单的方法,因为它不需要添加/更改获取源。
<id>
拉动特定PR 您也可以直接使用PR的 id 拉动PR:
git pull https://github.com/{upstream/project} refs/pull/{id}/head
有关其他选项,请参见: