You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 10下使用git-filter-repo向最早提交添加文件的命令写法

在Windows 10环境下向Git仓库最早提交添加.gitignore或LICENSE的单行命令写法

核心逻辑说明

原命令的作用是仅在仓库的根提交(无父提交的最早提交)中添加指定文件,需要针对Windows的CMD和PowerShell环境调整语法,以下是具体实现:


前置准备

  1. 确保已安装git-filter-repo工具
  2. 将需要添加的.gitignore或LICENSE文件放在Git仓库的根目录下
  3. 打开终端(CMD或PowerShell)并切换到仓库根目录

1. 使用PowerShell的写法

PowerShell支持直接内嵌命令替换,写法更简洁:

添加.gitignore文件

git filter-repo --force --commit-callback "if not commit.parents: commit.file_changes.append(FileChange(b'M', b'.gitignore', b'$(git hash-object -w .gitignore)', b'100644'))"

添加LICENSE文件

git filter-repo --force --commit-callback "if not commit.parents: commit.file_changes.append(FileChange(b'M', b'LICENSE', b'$(git hash-object -w LICENSE)', b'100644'))"

2. 使用CMD的写法

CMD不支持直接内嵌命令替换,需要先获取文件的Git哈希值再执行命令:

添加.gitignore文件

  1. 先获取文件哈希值并存入变量:
for /f "delims=" %h in ('git hash-object -w .gitignore') do set HASH=%h
  1. 执行filter-repo命令:
git filter-repo --force --commit-callback "if not commit.parents: commit.file_changes.append(FileChange(b'M', b'.gitignore', b'%HASH%', b'100644'))"

添加LICENSE文件

  1. 获取哈希值:
for /f "delims=" %h in ('git hash-object -w LICENSE') do set HASH=%h
  1. 执行filter-repo命令:
git filter-repo --force --commit-callback "if not commit.parents: commit.file_changes.append(FileChange(b'M', b'LICENSE', b'%HASH%', b'100644'))"

关键参数解释

  • b'M':表示对文件执行添加/修改操作(根提交中无此文件,实际效果为添加)
  • b'.gitignore'/b'LICENSE':文件在仓库中的相对路径,需与实际存放路径一致
  • git hash-object -w <文件名>:将本地文件写入Git对象库并返回唯一哈希值,-w确保对象被持久化
  • b'100644':普通文本文件的标准权限标识,无需修改

内容的提问来源于stack exchange,提问作者jmoreno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 04:46:28