我想使用 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 并杀死机器。
我关注了这些帖子
答案1
我将非常感激您的指导。
简短回答,请尝试git filter-repo
(注意空格)来自cmd
。要git-filter-repo
直接使用(再次强调,来自cmd
,而不是 Git Bash),请尝试git-filter-repo
。
长答案
以下步骤在 Windows 上对我有用(至少安装时如此git-filter-repo
),因为git-filter-repo 的 PyPI 页面列出与操作系统无关的模块:
获取例如Python 3.8.8从https://www.python.org。跳过 Microsoft Store 版本的 Python。目前,
git-filter-repo
可能适用于 Python 3.10,但在使用脚本时也可能会引入问题。有适用于 Windows 的 Git安装并可通过
cmd
as使用git
。在非系统文件夹没有空格(即不在
Program Files
、Program Files (x86)
或中AppData
)。例如这样的内容C:\Programs
是可以接受的。将您的 Python 安装文件夹(例如
C:\Programs\Python38-32
)添加到您的System
Path 变量(而不是您的User
PATH 变量)。重启。
打开一个
cmd
窗口并输入python -V
,然后where python
。您应该会返回Python 3.8.8
第一个命令的 eg 和第二个命令的 eg Python 3.8.8 安装的完整路径。如果在 Python 3.8.8 路径之前有另一个 Python 条目,则可能需要采取其他步骤。假设步骤 6 满足所列要求,请使用
python -m pip
(而不仅仅是pip
或py -m pip
)安装最新版本的git-filter-repo
:python -m pip install git-filter-repo
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一切开始正常运转。
我希望这对将来的某人有所帮助。