【问题标题】:How to skip files belonging to a git submodule?如何跳过属于 git 子模块的文件?
【发布时间】:2019-06-03 02:05:03
【问题描述】:

我想在脚本中批量更新文件,使用以下命令:

grep -l -r -E "..." . | while read -r FILE ; do
    # How to do the next line only for files that are not in submodules?
    sed -i '' -E '...' "${FILE}"
done

但是,我有 git 子模块并且不想更新这些子模块中包含的文件。如果没有维护子模块所在路径的黑名单,有没有办法检查文件是否属于子模块或完全跳过它们?

【问题讨论】:

  • 我不确定,但也许这有帮助:stackoverflow.com/questions/2405305/…
  • 这种方法的问题是所有文件都被跟踪,只是在一个子模块而不是主仓库中。
  • 你可以使用git grep 而不是常规的grep。
  • @torek 它完全符合我的需要。想添加答案吗?
  • 从技术上讲,这不是您提出的问题的答案。 :-) (链接的问题 is,并且应该有效:“是跟踪文件”的测试将使用 current Git repo 的索引,而不是子模块 repo 的索引。它只是比不首先查看子模块文件效率低。)

标签: bash git macos


【解决方案1】:

如果你可以直接使用git grep——Git 的 grep 非常强大,但可能与系统变体存在细微差别需要注意——这很好地避开了问题,因为 git grep 只查看正确的文件第一名。

(大多数情况下,只需将grep 替换为git grep。)

【讨论】:

  • 谢谢,它有效。我确实不得不稍微更改 grep 步骤,但它按预期工作。
猜你喜欢
  • 2021-01-06
  • 2020-02-29
  • 2012-05-30
  • 2023-03-03
  • 1970-01-01
  • 2019-07-08
  • 2012-04-20
  • 1970-01-01
相关资源
最近更新 更多