如何在忽略 .gitignore 的同时排除 Git 中的文件?

颈椎病

背景

我正在将 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),因为它已被多次建议。主要是因为这些原因:

  1. 有嵌套.gitignore文件
  2. 他们的存在和内容依赖于其他VCS的状态,我想完全控制
  3. 还有另一个 VCS 跟踪文件,因此除了从其他 VCS 增量获取之外,任何修改工作树的事情都会使事情变得复杂
  4. 它很可能更慢(虽然可能不够慢,不足以成为一个主要问题)
山丘

如果标准的便利不是您想要的,请使用核心命令创建自己的便利。git ls-files允许您根据自己的喜好构建排除项,并git update-index接受您想要的任何内容。

git ls-files -ocX /path/to/my/excludes \
| git update-index --add --remove --stdin
git ls-files git update-index
  • --add 如果指定的文件不在索引中,则添加它。
  • --remove 如果指定的文件在索引中但丢失,则将其删除。
  • --stdin 不是从命令行获取路径列表,而是从标准输入读取路径列表

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在忽略其父文件夹的同时忽略gitignore中的一个文件

如何使git忽略.gitignore中的忽略

如何使用.gitignore文件正确忽略git中的文件?

Git如何从签出中忽略.gitignore中的文件

Git忽略父目录中的.gitignore文件

Git正在忽略不在gitignore中的文件

Git在.gitignore中添加被忽略的文件

Git push不会忽略.gitignore中的文件

Git-在从裸仓库中检出期间如何排除.gitignore文件?

如何使用git忽略文件-不添加.gitignore

git GUI会忽略.gitignore文件吗?

Git .gitignore仅忽略根目录中的文件夹

该文件被 Git 忽略,但它不在 .gitignore 中

如何在.gcloudignore中包含在.gitignore中忽略的文件

如何使.gitignore忽略文件?

如何在 .gitignore 中忽略 Xamarin 的模拟器文件?

'!' 不排除.gitignore中的文件

如何在git中忽略以〜结尾的文件?

Git-如何从单个项目的全局.gitignore中删除排除模式

如何让 gitignore 排除 2 个文件夹中存在的特定 js 文件,而忽略所有其他 js 文件?

.gitignore被Git忽略

如何gitignore远程分支git上的文件

Silver Searcher:如何忽略.gitignore中的文件?

如何忽略.gitignore中的子文件?

最终追溯性.gitignore(如何使Git完全/追溯性地现在忘记.gitignore中的文件)

.gitignore排除特定文件

如何在目录忽略.gitignore文件上运行jsdoc

.gitignore-忽略文件夹排除的困难

取消忽略 .gitignore 中的文件不起作用。我想让 GIT 忽略 bin 目录?