【问题标题】:Copy single branch from git repo and make it independent从 git repo 复制单个分支并使其独立
【发布时间】:2025-12-05 01:15:04
【问题描述】:

我有一个 git repo,可以说“MyRepo”,具有以下结构、branch1、branch2、标签等。 我想创建一个新的 git repo,“EasyStart”,它只有 branch2 的代码和历史记录,我不想要来自 MyRepo 的任何其他东西,例如 branch1、标签等。而且我不希望与 MyRepo 有任何其他链接或连接。因此,一旦设置了 EasyStart 存储库,它就只有分支 1 的历史记录和代码,因此在 EasyStart 上所做的任何更新/更改都不会反映在 MyRepo 中,反之亦然。我如何实现这一目标?

【问题讨论】:

  • 如果你根本不关心历史,你可以 git clone 到一个目录,检查你想要的分支,然后将除.git之外的所有内容复制到一个新目录中并运行@987654322 @ 那里。暂存并将所有内容提交到 master 上的第一次提交中,然后推送到新仓库的远程。
  • 感谢您的回复。我们确实关心历史,我们希望拥有该分支的历史。

标签: git git-branch git-clone git-mirror


【解决方案1】:

您可以通过使用临时存储库进行清理来实现此目的。 步骤是:

  1. 克隆原始存储库
git clone <old repo>
  1. 将其推送到新的临时存储库
git remote set-url origin <temp repo>
git remote -v
git push origin
  1. 删除您想要的所有分支(本地和远程)
git fetch
git push origin --delete branch1
git branch -D branch1
  1. 删除所有标签(本地和远程)
git fetch
git push origin --delete $(git tag -l)
git tag -d $(git tag -l)
  1. 删除遥控器并添加新的(最终)遥控器并推送到它。这应该会给你一个干净的开始。
git remote set-url origin <temp repo>
git remote -v
git push origin

【讨论】:

  • 感谢您的快速回复。这是否会保留当前现有的 repo,因为它包括当前 repo 的 branch2?我总是害怕移除遥控器等。所以当我移除遥控器时,它不会影响原始回购吗?抱歉问了太多问题。
  • 这就是为什么您要更换遥控器,以免触碰原来的遥控器;)您甚至可以备份旧遥控器,以便随时恢复使用。只需注意“git remote -v”的输出,以免推送到错误的仓库
最近更新 更多