背景
我正在将 VCS 迁移到 git。这是通过从旧的 VCS (TFSVC) 中签出并通过脚本签入 git 存储库来完成的。
基本上在这样一个循环中:
for x in $(seq 1 100)
do
tf get $x # get version x
git add . # add everything to index
git commit # commit
done
问题
旧的 VCS 包含一个.gitignore
,作为迁移过程的一部分,我不希望应用这些模式。这可以很容易地使用git add . --force
. 问题是我可能仍然想忽略一些事情。
我试过的
我希望.git/info/exclude
用于此目的,但git-add --force
显然除了.gitignore
规则之外还忽略了这一点。似乎也一样core.excludesFile
。
理想的解决方案
- 排除规则
.gitignore
.git/info/exclude
在或其他一些排除文件或模式中使用规则- 有点性能,这个过程足够慢
- 不依赖于修改工作树
一个选项当然是git restore --staged $EXCLUDE_PATH_SPEC
在将所有内容添加到索引之后,但我想知道是否没有更好的解决方案。
我似乎记得看到一个用于指定忽略/排除 glob 的选项,但我似乎无法找到它。
也许有一种方法可以使用管道命令来实现这一点,比如git update-index
?
编辑
我已经添加说明,我不想依赖修改工作树的解决方案(即:移动/修改.gitignore
),因为它已被多次建议。主要是因为这些原因:
- 有嵌套
.gitignore
文件 - 它们的存在和内容依赖于其他 VCS 的状态,我想完全控制
- 有另一个 VCS 跟踪文件,所以任何修改工作树的东西,除了从其他 VCS 增量获取使事情复杂化
- 它很可能更慢(尽管可能还不足以成为主要问题)