git - 如何将部分历史记录从 git 分支传输到新存储库?

标签 git github version-control git-branch git-merge

我最近加入了一个项目,该项目有一个 github 存储库,其分支实际上是整个源代码树的全新开始。我想复制一个分支,从“新源树”提交开始,复制到一个新的存储库,而没有旧源树的任何残留物留在存储库中(允许存储库小得多) 。实现这一目标的步骤是什么?

这是有问题的“新源树”提交:

警告...它真的很大。

https://github.com/ohmage/server/commit/078aecd78d54c6c20e124be3a54979e3a9d81c6f

最佳答案

我不知道这是否一定是最好的方法,而且我还没有广泛测试它,但我会按照这些思路做一些事情(假设 - 您想要从中复制的分支称为 我的分支):

1) 在当前存储库中,创建一个新的孤立分支,其中包含要复制的第一个提交的内容:

$ git checkout --orphan -b tmpbranch <hash_of_first_commit>
$ git commit -a -m 'first commit'

2) 精挑细选您想要的其余提交:

$ git cherry-pick <hash_of_first_commit>..mybranch

3) 将此新的孤立分支推送到新存储库,作为新的 master 分支:

$ git push <URL_of_new_repo> refs/heads/tmpbranch:refs/heads/master

4) 删除tmpbranch,以便垃圾收集最终会为您清理:

$ git checkout mybranch
$ git branch -D tmpbranch

关于git - 如何将部分历史记录从 git 分支传输到新存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24939021/

相关文章:

Visual Studio 2019 中的 Git 日志历史记录

powershell - 如何确定 TFS 工作区是本地工作区还是服务器工作区

c# - 版本控制系统 c#

git - 有没有办法在不改变格式的情况下比较 Git 中的两个文件?

version-control - 绑定(bind)到 VS2013 中的源代码管理时出现未指定错误

Xcode - 使用 SSH 身份验证添加存储库时出现身份验证失败错误

node.js - 错误消息: It looks like you are missing some dependencies you need to get Electron running

git - 您如何使用未暂存的更改正确切换开发设备?

git - 如何将 github 个人访问 token 添加到 Visual Studio 代码

GitHub pull 请求与 Git 命令行 merge