【Github】sync fork后,意外关闭之前提交分支的pr申请 + 找回被关闭的pr请求分支中的文件

简介: 【Github】sync fork后,意外关闭之前提交分支的pr申请 + 找回被关闭的pr请求分支中的文件

写在最前面

尝试用自己的方法理解,并初步解决了该问题。路过大佬如如果了解这个问题,还请多多指教!

先fork主仓库A,到我自己的仓库B。然后一段时间后,仓库B新增更新b,同时关于b的pr请求没有被合并。在此期间,仓库A更新了很多其他内容。在仓库B点击sync fork后,为什么会关闭之前提交分支的pr申请?

找不到原来的源文件了。

参考:github官方文档:同步复刻

原因解析

当您点击 “Sync Fork” 同步您的 fork 时,GitHub 会将原始仓库(这里是仓库 A)的最新更改拉取到您的 fork(仓库 B)中。这个操作实际上是在您的 fork 中创建一个新的本地分支,该分支与原始仓库的主分支(通常是 main 或 master)保持同步。

如果您的 Pull Request 基于一个之前提交的分支,而该分支在您点击 “Sync Fork” 之后被删除或者重写了(即通过新的提交覆盖了之前的提交),那么与该分支相关的 Pull Request 会被关闭。这是因为 GitHub 认为您的分支已经不再存在,所以相应的 Pull Request 也不再适用。

解决这个问题的方法之一是在您点击 “Sync Fork” 之前,确保您的 Pull Request 基于的分支在原始仓库中仍然存在,并且没有被更新或删除。如果分支已被更新,您可以将您的本地分支重新基于原始仓库的最新状态,然后再次提交 Pull Request。

如果您对自己的 fork 进行了一些重要的更改,但是又想保持与原始仓库的同步,您可以考虑使用 Git 的 rebase 或者 merge 命令来将原始仓库的更改合并到您的分支中,而不是直接点击 “Sync Fork”。这样可以更好地控制您的分支和提交历史。

提交pr,pr是什么?

PR 是 Pull Request(拉取请求)的缩写。Pull Request 是一种在开源项目中进行协作的方式。当您 fork 一个仓库并在其基础上进行更改后,您可以向原始仓库的所有者发送 Pull Request,请求他们将您所做的更改合并到他们的仓库中。

通常,Pull Request 包含以下信息:

  1. 基础(Base)分支:您希望将更改合并到的目标分支。通常是原始仓库的主分支,比如 main 或 master 分支。
  2. 对比(Compare)分支:包含您所做更改的分支。通常是您 fork 出的仓库中的一个分支,您可能已经在该分支上进行了一些更改。
  3. 标题和描述:Pull Request 的标题是对所做更改的简要描述,而描述则是对更改的详细说明,可以包括更改的目的、解决的问题、所做的修改等信息。
  4. 相关问题和标签:您可以将 Pull Request 与仓库的问题(issue)相关联,以便更好地跟踪工作进度。您还可以为 Pull Request 添加标签,以便更容易地对其进行分类和筛选。

一旦您提交了 Pull Request,仓库的维护者可以审查您所做的更改,并提供反馈或者接受并合并您的更改。这种方式使得多人协作开发变得更加简单和透明。

rebase 或者 merge 命令

当您想将原始仓库的更新合并到您的分支时,您可以使用 git rebase 或者 git merge 命令。

  1. 使用 git rebase 命令:
git checkout your_branch  # 切换到您的分支
git fetch upstream  # 拉取原始仓库的更新
git rebase upstream/main  # 将原始仓库的 main 分支上的更新 rebase 到您的分支上

这会将原始仓库的更新添加到您的分支上,并在您的提交历史中按照更新的顺序重新排序。请注意,使用 git rebase 会改写您的提交历史,因此请在确认您的更改不会影响其他人的工作之后再使用此命令。

  1. 使用 git merge 命令:
git checkout your_branch  # 切换到您的分支
git fetch upstream  # 拉取原始仓库的更新
git merge upstream/main  # 将原始仓库的 main 分支上的更新合并到您的分支上

这会在您的分支上创建一个新的合并提交,将原始仓库的更新合并到您的分支上。与 git rebase 不同,git merge 会保留原始的提交历史。

在这两种情况下,upstream 是原始仓库的别名,您需要将其替换为原始仓库的实际 URL 或者名称。

执行完上述命令后,您可以将您的分支推送到您的 fork 中:

git push origin your_branch  # 推送您的分支到您的 fork 中

这样就可以将原始仓库的更新合并到您的分支中,而不会影响您之前提交的 Pull Request。

找到分支中被删除的文件

找到被关闭的提交请求pr

方法1:在公共仓库被关闭的pr中大海捞针

方法2:在请求申请中点击Compare对比

在Comparing changes中

可以看到有改变的地方

https://github.com/PaddlePaddle/community/compare/b946e34e4836b8cc72f61ff3ea4fbdb622ba8b2d…30a86d3fe24b1bcf465f5186ddfd00ef135c351b?diff=unified&w=#diff-9ef9299f5418b9be474550ff88e351c9ded72d153344825bf4b2074537d74572

换到Unified后,可以更清晰的看到改变的文件

红色是被删除的,绿色是新增的

可以查看改变的文件

选择点击chaged files,可以查看改变的文件

在改变的文件中,可以看到分辨:新增】合并】删除

所删除文件所在地址

https://github.com/PaddlePaddle/community/blob/b946e34e4836b8cc72f61ff3ea4fbdb622ba8b2d/rfcs/Article/(文章名)

这里可以下载被误删的源文件

目录
相关文章
|
19天前
|
机器学习/深度学习 自然语言处理 网络安全
【pkuseg】由于网络策略组织下载请求,因此直接在github中下载细分领域模型medicine
【pkuseg】由于网络策略组织下载请求,因此直接在github中下载细分领域模型medicine
23 1
|
19天前
|
开发工具 git 开发者
【GitHub】如何在github上提交PR(Pull Request) + 多个pr同时提交、互不干扰
【GitHub】如何在github上提交PR(Pull Request) + 多个pr同时提交、互不干扰
21 6
|
19天前
|
缓存 网络安全 开发工具
【尝试】域名验证:配置github二级目录下的txt文件
【尝试】域名验证:配置github二级目录下的txt文件
36 2
|
19天前
|
安全 网络安全 开发工具
【GitHub】清空 GitHub 仓库中的所有内容,只保留 `README.md` 文件
【GitHub】清空 GitHub 仓库中的所有内容,只保留 `README.md` 文件
15 2
|
19天前
|
Linux API 开发者
【专栏】掌握`curl`能提升开发效率和解决问题的能力
【4月更文挑战第28天】本文介绍了如何使用`curl`命令从GitHub下载文件。基础操作包括获取文件的克隆URL,打开终端输入`curl -O <file_clone_url>`,执行命令以下载文件。文章还提及了代理设置、认证和错误处理等高级应用,帮助开发者更高效地管理代码和资源。掌握`curl`能提升开发效率和解决问题的能力。
|
19天前
|
程序员
借用GitHub将typora图片文件快速上传CSDN
借用GitHub将typora图片文件快速上传CSDN
|
19天前
|
开发工具 git
git如何创建新分支,GitHub默认分支是main怎么连上
git如何创建新分支,GitHub默认分支是main怎么连上
27 0
|
19天前
|
开发工具 git
对于github不同的分支main或者master,git拉取代码的时候怎么拉取不同分支的代码
对于github不同的分支main或者master,git拉取代码的时候怎么拉取不同分支的代码
27 1
Github分支管理范例
Github分支管理范例
56 0
Github分支管理范例
Github分支管理范例
62 0