如何将一个新的git仓库变成另一个仓库的分支?

3
我下载了一个第三方项目作为非跟踪文件(没有 .git 文件夹),并在其中使用 $git init 命令创建了一个新的 Git 存储库,以跟踪我的更改。
后来我发现这个项目已经有一个公共的 Git 存储库,它与我下载的裸文件状态相同(与我的初始提交完全相同)。
我应该这样做:
克隆远程存储库,创建一个新的本地分支,然后将其推送到远程。
实际上我做了这个:
只是拿了这些文件,在其中创建了一个干净的本地 Git 存储库(主分支),并进行了多次提交。
我想要做的是:
将我的本地初始提交转换为远程存储库的一个分支(更改其父级),并保留我已经完成的更改。
我想这应该是可能的,但我不太懂 Git。
谢谢!
2个回答

3

好的,您可以尝试以下步骤(您可以使用不同于origin的名称):

  1. git remote add origin 项目仓库的URL地址
  2. git fetch origin
  3. git rebase FETCH_HEAD

您有很大的机会让git自动发现原始版本和新远程版本实际上是相同的文件集,并通过跳过除了您的更改之外的任何内容来解决虚假合并冲突。

如果这种方法没有正常工作,则还可以将“真实”的仓库克隆到其他位置,然后在其上重新应用您的更改(从非常手动的DIY方式到一些更自动化的方法都有无数种方法可供选择)。


这比我想象的简单。就像你预测的那样,git 自动尝试猜测我的更改从哪里开始,并将它们应用于 origin,但将它们应用于了主分支。有什么办法让我的提交属于一个新分支吗? - Vanja D.
所以你把你的工作移到了原始包的历史之上。你只需要将本地的“master”分支重命名为git branch -m master your_branch_name - Romain

2

您可以将您的仓库作为原始仓库的远程仓库添加,获取提交记录,并尝试进行变基。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接