Git LFS迁移仅作用于master分支失效及全分支迁移后推送疑问
问题解答
一、如何只改写master分支的历史,避免影响其他分支
你遇到的问题是因为git lfs migrate import默认会处理指定分支能追溯到的所有提交,包括其他分支与master共享的祖先提交,所以其他分支的历史也会被改写。要解决这个问题,只需添加--no-rewrite-other-refs参数,它会阻止工具修改指定分支之外的其他引用,只处理master分支的历史:
git lfs migrate import --include="*.pt,*.params" --include-ref=refs/heads/master --no-rewrite-other-refs
注意:命令里的文件名匹配规则不要加空格(把*.pt, *.params改成*.pt,*.params),避免匹配出错。
二、对所有分支执行历史改写后是否需要强制推送
是的,必须强制推送。因为历史改写会改变提交的哈希值,远程仓库的旧提交和本地改写后的提交完全不匹配,普通推送会被拒绝。
推荐使用更安全的--force-with-lease参数(它会检查远程分支是否有你未同步的新提交,避免误覆盖他人的修改):
git push --force-with-lease --all git push --force-with-lease --tags
如果确定远程没有其他人的新修改,也可以用--force,但前者更稳妥。另外一定要通知所有协作的开发者,让他们放弃本地旧分支,重新拉取远程的改写后的分支,否则会出现冲突。
内容的提问来源于stack exchange,提问作者Carlo
相关产品推荐
相关产品推荐

