【问题标题】:How to transfer a Git repo to master branch of another如何将 Git 存储库转移到另一个的主分支
【发布时间】:2020-01-30 08:18:04
【问题描述】:

我刚刚完成了我的模板引擎 Squirrelly 的开发。我将当前版本存储在 https://github.com/squirrellyjs/squirrelly 的 GitHub 存储库中,新版本存储在 https://github.com/squirrellyjs/squirrelly-next

我的问题与最终在 NPM 上发布有关。最初我计划在squirrelly-next 发布,然后稍后合并,但我想我决定只在squirrelly@8.0.0 发布。

然而,问题是所有新开发都在squirrelly-next 存储库中,我需要以某种方式将代码和历史记录到squirrelly 存储库(带有v7 的分支)。

我实际上只是考虑将 https://github.com/squirrellyjs/squirrelly 重命名为 https://github.com/squirrellyjs/squirrelly-v7https://github.com/squirrellyjs/squirrelly-next 重命名为 https://github.com/squirrellyjs/squirrelly。这会有任何潜在的缺点吗?如果是这样,我如何将我的 Git 存储库从 squirrelly-next 获取到 squirrelly 的主分支?

【问题讨论】:

  • 为相同的源代码类型创建单独的 git repos 违背了分支的目的。话虽这么说,这似乎是你想要的:stackoverflow.com/questions/1425892/…
  • @user2263572 好吧,我实际上完全重写了库(新的基础设施、Typescript 而不是 JavaScript、新的测试等),所以它不是相同的源代码。但我明白你的意思:)
  • 嗯,据我了解,该项目有两个存储库,您想将一个分支移动到另一个存储库对吗?
  • @PrateikDarji 基本上是的。
  • 我已经更新了新分支和现有分支的答案

标签: git github npm


【解决方案1】:

可能有多个选项可以做到这一点,但是我正在描述我使用最多的一个是您可以在项目中添加两个存储库。

假设有一组作为你的原点,

https://github.com/squirrellyjs/squirrelly

您可以通过git remote -v 进行检查,它会为您提供列表或远程存储库。

您需要创建一个新的存储库,您需要将代码移动到该存储库

https://github.com/squirrellyjs/squirrelly-next

然后,按照以下命令返回您的项目。

git remote add new-originhttps://github.com/squirrellyjs/squirrelly-next

git fetch new-origin

就是这样,

现在,如果您想将任何分支从原点移动到新原点,只需按以下步骤操作。 假设我正在做一个例子,我们想将旧起源的主分支移动到新起源

我们只需要检查我们旧起源的 master 分支

如果新仓库中不存在分支

git push new-origin master

如果存在,那么首先你需要在本地获取新的存储库分支

git checkout new-origin/master

在本地创建分支。

git checkout new-master

如果 new-master 与 master 在将 master 合并到 new-master 之前,我们需要 rebase

git checkout master //which is from old repository.

git rebase new-master

解决冲突(如果有)

git checkout new-master
git merge master
git push new-origin/master

这将包含最新代码以及旧存储库中的代码。

那么你需要在本地为分支设置跟踪,

git branch --set-upstream-to=new-origin/master

或者您可以删除旧的原点并将新原点重命名为原点

git remote rm origin
git remote rename new-origin origin

如果按照第二步,则不需要更改分支的跟踪信息。

【讨论】:

    【解决方案2】:

    我意识到实际上并没有必要尝试将我的新存储库与旧存储库合并,因为它们具有不相关的历史记录,而新存储库是从一个空存储库开始的。

    所以,我最终只是使用https://stackoverflow.com/a/34100189/7983596 创建了一个新的空白分支。

    然后,我将远程路径添加到我的新存储库并将我的新存储库与我的新空白分支合并(注意:我需要先git add .git commit)。

    之后,我按照以下指南:https://multiplestates.wordpress.com/2015/02/05/rename-a-local-and-remote-branch-in-git/ 将我的旧 master 分支重命名为 v7,然后将我的新空分支重命名为 master。 (我不得不更改 GitHub 上的默认分支)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-25
      • 2021-05-11
      • 2020-10-25
      • 2019-03-16
      • 2015-03-01
      • 2022-01-11
      • 2014-10-20
      • 1970-01-01
      相关资源
      最近更新 更多