git - 是否有一个简单的解决方案可以将软件的不同分支导入到新的 git 存储库中?

标签 git branch

一些背景知识。我工作的实验室里有很多自制软件。许多项目都源于同一来源,但没有版本历史记录。在某些时候,其中几个出于不同的实验目的而被 fork 。我们正在将所有这些软件放入 git 存储库中。希望这将使我们能够在将来 merge 不同的版本。

因此,我必须为项目1版本A创建一个新的git存储库并调用该主分支。

然后我希望 project1 versionB 成为同一个 git 存储库的分支。

不过我还没有找到解决这个问题的好方法。到目前为止我最好的想法是:

git init(在project1 versionA中)目录,然后提交并推送到远程存储库。 然后将其 pull 入 versionB 所在同一台计算机上的新空文件夹中。 然后,我 checkout 一个名为 versionB 的新分支,并将该版本中的所有内容复制到版本 A 之上。然后提交 -a 并推送。

这应该给我 git 中的两个版本/分支。一种称为 master(版本 A),一种称为版本 B。除了它不是一个简洁的解决方案之外,这个问题还在于版本 A 中存在但版本 B 中不存在的任何文件现在都将存在于版本 A 中。这肯定会造成困惑,并且由于许多软件都会查找某些文件夹并加载其中的所有内容,这将会出现问题。

另一个想法是在复制之前从版本 B 分支中清除版本 A 的内容,这样可以解决问题吗?

这似乎是一种迂回的方式来做一些应该相当简单(并且经常遇到)的事情?

最佳答案

Another idea would be to purge the version A stuff from the version B branch before copying over, would this solve the problem?

或多或少。提交并推送主分支后,创建并 checkout versionB。现在 git rm .(即清空目录),复制 versionB 内容,然后提交 + 推送它。 可能为第一个版本B创建一种困惑的提交记录; OTOH它可能不是——但这只是“修改的文件A”和“删除的文件A,新的文件文件A”之间的区别(我以前做过这个,但我不记得这方面的结果)。

实际上:如果您直接覆盖不需要的文件,而不是先将它们全部删除(除非这太乏味),可能会更好。

关于git - 是否有一个简单的解决方案可以将软件的不同分支导入到新的 git 存储库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10178280/

相关文章:

git - 将忽略的目录移动到其他分支

Git分支过滤选定的文件

branch - 如何使用非标准 svn 存储库布局的 git-svn 访问 svn 分支?

git - Windows 上的 Git 目前存在哪些问题

git - 如何更改 git repo 的所有者?

git - 如何在不提交到 Git 中的远程存储库的情况下保存

Github Repo 损坏 - Sha1 冲突

bit-manipulation - 无分支饱和度

git - 删除 git 中的分支是否会将其从历史记录中删除?

git - 使用原始源代码更新 Git 中的功能分支