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",确实更难
我的情况是这样的: 我正在使用源代码对旧游戏进行修改。有很多文件。由于是老游戏,所有没有被我修改过的文件都有一个旧的文件修改时间戳。
如果我只能将最近(由我)更改的文件添加到存储库(跟踪它们),那将对我很有帮助。 这样就可以很容易地立即看到哪些文件被更改了,并且可以更容易地自动打包它们。
我可以编写一个程序来跟踪后台所有文件的时间戳并动态更改 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",确实更难