git - 按时间戳忽略文件

git - ignore files by timestamp

我的情况是这样的: 我正在使用源代码对旧游戏进行修改。有很多文件。由于是老游戏,所有没有被我修改过的文件都有一个旧的文件修改时间戳。

如果我只能将最近(由我)更改的文件添加到存储库(跟踪它们),那将对我很有帮助。 这样就可以很容易地立即看到哪些文件被更改了,并且可以更容易地自动打包它们。

我可以编写一个程序来跟踪后台所有文件的时间戳并动态更改 git忽略文件。 但是可以使用 git 机载工具来做这样的事情吗?

你好,

Neconspictor

我不知道 git 工具可以做到这一点。明显的位置是在 gitignore 工具中,但它只适用于文件模式。您必须独立生成此文件列表。由于您的文件只是本地文件,文件列表不需要推送到 git 服务器,因此 $GIT_DIR/info/exclude 听起来像是放置列表的正确位置。

在你的情况下,你可以用类似的东西生成列表(例如 2015-03-22 15:30):

touch -t 201503221530 timestamp_file
find . ! -newer timestamp_file > .git/info/exclude

但是,如果不是太麻烦的话,我通常建议跟踪 git:

中的所有内容
  • 未更改的文件通常不会打扰
  • 获取两次提交(git diff --name-only <sha1> <sha2>git diff --name-only <sha1> HEAD)之间更改文件的列表很简单
  • 假设您当前只编辑(因此跟踪)文件 A 和 B,然后您开始编辑文件 C。您需要记住在 之前 添加并提交文件 C开始使用 C 来跟踪未来的变化。已经跟踪 C 不是更容易吗? (在这里,应该有一种方法可以使用一些 git hooks,例如 pre-commit 钩子,来检查 .git/info/exclude 中的所有文件是否早于 timestamp_file,并拒绝提交如果不是这样的话。)
  • 对于这个 ABC 示例,当您想要获得所有 您的 更改时,您不能再进行简单的 git diff --name-only <sha1> HEAD,因为它会包括在之前添加 C你的改变。所以绝不是"easier to automatically package them",确实更难