0

我正在努力将一个 git repo 从一个提供商转移到另一个提供商。作为该过程的一部分,由于历史记录中文件的大小(文件在几个月前被删除但仍然存在于历史记录中),新的 repo 在推送时被拒绝。

我找到了两者git filter-branch,并BFG repo-cleaner作为解决此问题的选项。它们按预期工作,并允许我推送到新的 repo,但我发现任何带有签名的 ref 都task/my-branch被复制到Task/my-branch,我找不到任何可以解释为什么或如何避免这种情况的参考。最坏的情况我可以在移动后手动清理这些,但想更好地了解它发生的原因以及是否有办法阻止它。

使用 BFG 清洁剂采取的步骤

1) git clone --bare ssh://path/to/repo.git

2) cd repo.git

3) git 分支 -a

观察分支,例如task/my-branch

4) 光盘..

5) java -jar bfg.jar --delete-files repo.git

6) git reflog expire --expire=now --all && git gc --prune=now --aggressive

7) git 分支 -a

观察分支,例如task/my-branchANDTask/my-branch

与 git filter-branch 类似的过程

1) git clone --bare ssh://path/to/repo.git

2) cd repo.git

3) git 分支 -a

观察分支,例如task/my-branch

4) git filter-branch -f --prune-empty --tag-name-filter cat --tree-filter 'rm -f -- --all

5) git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d

6) git reflog expire --expire=now --all && git gc --prune=now --aggressive

7) git 分支 -a

观察分支,例如task/my-branchANDTask/my-branch

4

0 回答 0