如何将 git仓库 中指定的文件夹 附带提交日志 迁移到另一个仓库?

假设:我们要将 source 仓库(repo)下的 foo 文件夹 移动到 destination 仓库下,除了文件内容迁移外,还包括相关的所有日志。

source仓库: https://github.com/user/source.git

destination仓库: https://github.com/user/destination.git

 

步骤1

为了不改变当前克隆出来的版本,我们需要重新克隆一个原始备份出来,在原始备份里进行操作,依次执行如下命令

mkdir backup

cd backup

git clone https://github.com/user/source.git

cd source

 

步骤2

将我们需要复制的文件夹更改到当前备份克隆里的根目录下,这里 git 提供了 git filter-branch 命令允许我们调整整个仓库的目录结构:只保留过滤器指定的文件及相关日志, 删除其他文件内容。

为了防止我们误操作导致覆盖线上仓库的内容,我们需要先解除备份仓库与线上仓库的关系,因此此步骤依次执行如下命令

git remote rm origin

git filter-branch --subdirectory-filter foo -- --all

这里如果存在 tag 被覆写(rewritten),则会报警告要求使用 "--tag-name-filter cat", 不过可以忽略不管。当然,如果要复

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值