gpt4 book ai didi

使用新的 .gitattributes 文件迁移 Git-LFS

转载 作者:行者123 更新时间:2023-12-02 11:16:59 31 4
gpt4 key购买 nike

我有一个较大的(32k 次提交)git 存储库,我需要在其中重写一个分支中的历史记录以删除 .gitattributes 文件所描述的一堆大文件。这个分支完全是本地的,从来没有碰到过远程(实际上我们的远程因为历史上的大文件而拒绝了它)。

我知道以下命令将遍历分支的历史记录并删除所有 .dll文件:

$ git lfs migrate import --include='*.dll'

但是由于 .gitattributes 文件存在并且相当广泛,如果在创建分支时 .gitattributes 文件已经存在,是否有一个命令可以简单地重放本来可以对这些文件进行指针化的工作?

最佳答案

我会先插入正确的 .gitattributes在分支的开头(例如使用 git rebase):

*--*--x--*--*--*--*--* <- master
\
*--*--*--*--*--*--a--* <- my/branch
^
commit with updated .gitattributes

# with the commits identified as above, from branch my/branch, run :
$ git rebase -i x
...
# in the opened editor, move commit 'a' at the beginning of the list
# save & close

# you should obtain :
*--*--x--*--*--*--*--* <- master
\
a'--*--*--*--*--*--*--* <- my/branch (rewritten)
^
rewritten commit
在那之后 :
您可以使用 git filter-branch --tree-filter让 git 一个接一个地重放提交,并应用 .gitattributes 中描述的过滤器:
# first arg is the name of a script to execute on each commit
# you have nothing to edit : just use 'true' as an action
# the only action you expect is that git applies the filters
# when re-staging files for each individual commit

git filter-branch --tree-filter true a'..my/branch
您可能想要添加 --prune-empty选项,或者您可以在重写后删除空提交,再次使用 git rebase -i例如。

关于使用新的 .gitattributes 文件迁移 Git-LFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58163427/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com