几周前,我收到了来自
my:abc
的针对我的分支 them:xyz
的拉取请求 (PR)。
截至今天,PR 已关闭。 在PR中,
them:xyz
现在被替换为unknown repository
,想知道这是什么意思,怎么会发生?
现在我想合并这些更改,但不幸的是我无法联系另一个人以获得新的 PR(谁提出了拉取请求)。
但是我仍然有拉取请求(这很好)。
有什么方法可以合并或挑选这些更改吗?
注意:PR属于商业公司,所以不能在这里分享。
如果 GitHub 上仍有拉取请求,您可以从 GitHub 将拉取请求作为补丁下载,在本地合并,然后推送更改。
来自 GitHub 拉取请求页面:
通过命令行合并
如果您不想使用合并按钮或自动合并 无法执行,可以通过命令进行手动合并 线。补丁
第 1 步:从项目存储库中签出新分支并进行测试 的变化。
git checkout -b new-branch master curl https://github.com/USER/REPOSITORY/pull/1.patch | git am
第 2 步:合并更改并在 GitHub 上更新。
git checkout master git merge --no-ff new-branch git push origin master
您始终可以挑选任何提交。
一旦你向 git 提交了一些内容并且仍然有分支,内容将保留在 git 下,除非你使用
git gc
将其删除
在你的情况下,它更简单,你有分支,也有代码(PR =完全更改),所以你可以使用
cherry-pick
或简单地将PR中的代码添加到你的分支。
您始终可以尝试将 PR 设置为合并到您的新分支中。
克隆后,所有 github 拉取请求也会存储在您的存储库中。
它存储在 ref 文件夹旁边的 .git 文件夹中,因此您也可以在本地拥有它。
// get locally the ID pull request
git fetch origin pull/ID/head:BRANCHNAME
我几天前遇到了这个问题
在我的例子中,我想要访问的PR是另一个人的分叉,它当前不存在,所以不能直接从他的分叉中拉出“当前不存在”
所以我通过执行以下步骤来处理它
解决方案:-
1-我使用
.batch
扩展名从浏览器本身访问了拉取请求
https://github.com/xxxxx/xxxx/pull/123.patch
这将被重定向到一个文件,该文件的路径中带有令牌,类似这样 https://patch-diff.githubusercontent.com/raw/xxxx/xxx/pull/123.patch?token=xxxxxxxxxxxxxxxx
2-然后我使用命令在项目目录中下载这个.batch
curl -O https://patch-diff.githubusercontent.com/raw/xxxx/xxx/pull/123.patch?token=xxxxxxxxxxxxxxxx
注意大写字母O
这将下载文件,就像这样 123.patch_token=xxxxxxxxxxxxxxxx
3-我使用
git apply
应用了此文件中存在的更改,并添加了 .patch
扩展名
git apply 123.patch_token=xxxxxxxxxxxxxxxx.patch
在此步骤中,您可以在本地计算机上进行更改,然后添加并提交它们
git add .
git commit -m "merging 123 PR "
注意: 记得删除我们实际上不想将其推送到 PR 的 .patch 文件
这一切,
askielboe 的答案对我来说效果很好,当我处于类似的情况时(2024-11-15),有两个修改:
curl https://github.com/USER/REPOSITORY/pull/1.patch | git am
没有为我工作。所以我访问了https://github.com/USER/REPOSITORY/pull/1.patch并发现我被重定向到https://patch-diff.githubusercontent.com/raw/USER/REPOSITORY/pull/1 .patch,无论出于何种原因。 curl https://patch-diff.githubusercontent.com/raw/USER/REPOSITORY/pull/1.patch | git am
did为我工作。谁知道为什么,哈哈。正如其他答案和评论所说,您也可以
git fetch origin pull/ID/head:BRANCH_NAME
à la https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in- pull-requests/checking-out-pull-requests-locally,如果这对你更有用的话。