gpt4 book ai didi

git - 如何使用 git filter-repo 修改远程历史记录?

转载 作者:行者123 更新时间:2023-12-04 12:23:03 29 4
gpt4 key购买 nike

过去我用过 git filter-branch从我的 git 历史记录中删除文件。之后,我可以执行强制推送来更新远程存储库。例如,从本地 repo 中删除所有 HTML 文件,然后重写远程以反射(reflect)更改:

$ git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch -r \*.html' --prune-empty -- --all
$ git push origin --force --all
这工作得很好。但看到为 filter-branch非常慢并且已经被弃用了一段时间,我想用 git-filter-repo 来做这件事反而。到目前为止,这似乎是等效的命令:
$ git-filter-repo --force --path-glob *.html --invert-paths
这第一步似乎有效。我的问题是当我之后尝试强制推送时,我发现我的 Remote 丢失了。
$ git push origin --force --all
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
当我检查 git remote -v 时,filter-repo 命令似乎已经删除了我的远程 URL。 .手动添加 Remote 让我陷入了其他设置无效的困境。
为什么git-filter-repo删除我的 Remote ?以及如何使用 git-filter-repo 重写 Remote 的历史记录就像我可以使用 git filter-branch ?

最佳答案

Why does git-filter-repo remove my remote?


The documentation在标题为 INTERNALS 的部分中解释了他们的推理。 :
  1. We don’t want users accidentally pushing back to the original repo, as discussed in DISCUSSION. It also reminds users that since history has been rewritten, this repo is no longer compatible with the original. Finally, another minor benefit is this allows users to push with the --mirror option to their new home without accidentally sending remote tracking branches.

And how can I rewrite remote's history using git-filter-repo like I'm able to with git filter-branch?


只需使用 git remote addorigin返回,或者——因为命令序列中的第 3 步是 git remote rm origin — 只是重命名 origin先改成别的名字。但是,如果您这样做,请注意第 2 步。
你说:

Adding back the remote manually puts me down a rabbit hole of other settings be invalid.


显然,您需要在这里详细说明。

关于git - 如何使用 git filter-repo 修改远程历史记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66373656/

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