从其他存储库中提取请求

ome*_*zig 5 fork github

这就是事情-我曾经很愚蠢,不知道分叉和克隆如何工作。因此,为了复制其他人的存储库并对其进行处理,我下载了该存储库的文件(不使用SC),创建了自己的新存储库,然后将这些文件提交给它。

现在,我想将请求仓库的主服务器请求拉回原始仓库,但是我不能,因为它不是一个fork。更进一步-git甚至都不知道它们来自同一源,因此,如果我要签出原始存储库,请打开一个新的fork,将所有文件从我的私人存储库中粘贴到新的fork中,然后请求重新输入后,它将显示为单个巨型提交,而我将丢失旧仓库中的所有提交和评论历史记录,这将是可怕的。

我是否可以在不丢失所有复制回购记录的所有历史的情况下,将请求的更改拉回到原始回购中?

Xio*_*iov 5

  1. 确保您在本地计算机上有一份更改的副本(我将其称为“复制的存储库”)并删除 GitHub 上的项目(如果您已经创建了该项目)。
  2. 在上游项目的 GitHub 页面上单击“Fork”。
  3. 在分叉过程完成后,将该存储库克隆到您的本地计算机(我将其称为“分叉存储库”)。
  4. 将所有更改的文件从复制的存储库复制到分叉存储库中。
  5. 验证它是否按预期工作,然后使用git status和查看更改git diff并提交它们。
  6. 将这些更改推送回 GitHub。
  7. 稍后,克隆存储库的 GitHub 页面上应该会出现一个横幅,其中提供了一个按钮来打开一个返回上游存储库的拉取请求。单击它并打开拉。


Mar*_*lin 5

不幸的是,没有办法合并两个没有共同祖先提交的分支。即使文件相同。

然而,一个非常hacky的解决方法如下:

  1. fork 并克隆原始 repo
  2. 在该存储库中,签出您最初下载的提交。
  3. 在你的非分叉的、下载的 repo 中,签出你下载后所做的第一次提交。
  4. 将这些文件复制到分叉仓库中
  5. 在分叉仓库中重新创建提交
  6. 重复步骤 3-5,但对于每个连续的提交。
  7. 完成后,您可以使用新创建的 git 历史打开拉取请求

这是一个费力的过程,您可能可以创建一个工具来完成它,但是如果提交不是很多,或者您不介意将几个提交合并为一个。(要做到这一点,在第 3 步中,只需跳过几次提交,之前提交的代码仍然存在)