努力让 git-filter-repo 工作

努力让 git-filter-repo 工作

我想使用 git-filter-repo 将多个文件夹从一个存储库移动到新存储库。GIT 文档建议使用git-filter-repo代替git-过滤分支但我之前从未使用过 Python。

我安装了最新的python(3.10.0)和GIT(2.33.1.windows.1)。

我发现安装.md说明令人困惑,所以我用 Google 搜索并尝试了一些建议,但都无法成功,但似乎发生了一些事情,我不太确定是怎么回事。我不确定下一步该做什么,或者我是否正确使用了它,我希望得到一些指导。

我将 git-filter-repo 第一行更新为 /usr/bin/env python3

仅供参考:git --exec-path= C:/ Program Files / Git / mingw64 / libexec / git-core

我在 Path 环境变量中添加了以下内容

  • C:\Users{用户名}\AppData\Local\Programs\Python\Python310
  • C:\Program Files\Git
  • C:\Program Files\Git\mingw64\libexec\git-core
  • C:\Users{用户名}\AppData\Roaming\Python\Python310\Scripts

我还将 git-filter-repo 文件移到了 git 的路径位置

我运行了 pip install (python/python3 不起作用,但 py 起作用了)

py-m pip 安装——用户 git-filter-repo

警告:脚本 git-filter-repo.exe 安装在“C:\Users{username}\AppData\Roaming\Python\Python310\Scripts”中,该目录不在 PATH 中。请考虑将此目录添加到 PATH,或者,如果您希望隐藏此警告,请使用 --no-warn-script-location。

成功安装 git-filter-repo-2.33.0

因此我将以下内容添加到 Path 环境变量中

  • C:\Users{用户名}\AppData\Roaming\Python\Python310\Scripts

然后跑了py-m pip install --user git-filter-repo 再次

要求已满足:c:\users{username}\appdata\roaming\python\python310\site-packages 中的 git-filter-repo(2.33.0)

当我在 CMD 中运行 git git-filter-repo 时,我现在得到以下内容

C:\Users{用户名}\bin>git git-filter-repo

git:“git-filter-repo”不是 git 命令。请参阅“git --help”。

在 Gitbash 中我得到了这个;

$ git-filter-repo

未找到 Python;无需参数运行即可从 Microsoft Store 安装,或者从“设置”>“管理应用执行别名”禁用此快捷方式。

如果我将 git-filter-repo 第一行更新为 #!/usr/bin/env py

在 gitBash 中运行git filter-pro它会生成数百个 python.exe 并杀死机器。

在此处输入图片描述

我关注了这些帖子

https://newbedev.com/how-do-you-install-git-filter-repo

如何安装 git-filter-repo?

如何安装 git-filter-repo?

答案1

我将非常感激您的指导。

简短回答,请尝试git filter-repo(注意空格)来自cmd。要git-filter-repo直接使用(再次强调,来自cmd,而不是 Git Bash),请尝试git-filter-repo

长答案

以下步骤在 Windows 上对我有用(至少安装时如此git-filter-repo),因为git-filter-repo 的 PyPI 页面列出与操作系统无关的模块:

  1. 获取例如Python 3.8.8https://www.python.org。跳过 Microsoft Store 版本的 Python。目前,git-filter-repo可能适用于 Python 3.10,但在使用脚本时也可能会引入问题。

  2. 适用于 Windows 的 Git安装并可通过cmdas使用git

  3. 非系统文件夹没有空格(即不在Program FilesProgram Files (x86)或中AppData)。例如这样的内容C:\Programs是可以接受的。

  4. 将您的 Python 安装文件夹(例如C:\Programs\Python38-32)添加到您的SystemPath 变量(而不是您的UserPATH 变量)。

  5. 重启。

  6. 打开一个cmd窗口并输入python -V,然后where python。您应该会返回Python 3.8.8第一个命令的 eg 和第二个命令的 eg Python 3.8.8 安装的完整路径。如果在 Python 3.8.8 路径之前有另一个 Python 条目,则可能需要采取其他步骤。

  7. 假设步骤 6 满足所列要求,请使用python -m pip(而不仅仅是pippy -m pip)安装最新版本的git-filter-repo

    python -m pip install git-filter-repo
    
  8. git filter-repo(请注意空格)现在应该可以通过 获得cmd。如果您想 git-filter-repo直接使用命令(即在 中cmd,但不涉及git),请确保正确的 PythonScripts目录(例如C:\Programs\Python38-32\Scripts)在 Path 变量(步骤 4)中列在任何其他 Python目录(如果存在)System之前。Scripts

笔记

  • Python 3.8.8 是 Python 3.8.x 系列的最后一个二进制版本,在撰写本文时,它是 PyPI 列出的(官方)支持的最后一个主要版本git-filter-repo

  • 我相信我当前的 Windows 版 Git 副本是使用“最小工具”选项安装的cmd。无论如何,我没有尝试使用 Git Bash 来实现这一点。

  • 我的 Windows 版 Git 副本安装在没有空格的文件夹中。带有空格的文件夹有时会对跨平台脚本造成问题(例如,Linux 和 Windows 都支持的脚本)。

建议

这些建议针对的是上面概述的长答案:

  • 删除git-filter-repo您放入 git 路径位置的文件。

  • 如果您只安装了 Python 3.10 并且只用于git-filter-repo,您可能需要py在执行长答案(上述)之前卸载它和(Python 启动器)。这在技术上不是必需的,但可以省去将来的麻烦。

  • 删除以下路径环境变量也是如此:

    • C:\Users{username}\AppData\Local\Programs\Python\Python310

    • C:\Users{username}\AppData\Roaming\Python\Python310\Scripts

答案2

经过 24 小时的艰苦尝试,我终于解决了我的问题。

我在主帖中提到,我遇到了数百个 python.exe 生成的问题,看来我不是唯一一个。

https://github.com/newren/git-filter-repo/issues/193#issuecomment-800351103

读完上面的内容后,我想我会尝试最后一件事,上面的帖子提到这有效管理员模式下的 Anaconda PowerShell 提示符我想知道那个 Powershell 版本是否“理解”了#!/usr/bin/env python意思。

因此,我在“管理员的用户变量”下创建了另一个环境“PYTHON”变量(见下图),恢复了对 git-filter-repo #!/usr/bin/env 所做的更改Python一切开始正常运转。

我希望这对将来的某人有所帮助。

在此处输入图片描述

相关内容