将空git提交与文件关联

时间:2011-09-08 18:20:21

标签: git

我知道你可以使用

git commit --allow-empty

将没有实际文件更改的提交放入存储库。

我遇到的问题是我需要能够创建与存储库中的各种文件相关联的空提交。换句话说,我希望能够为其添加一些空提交

git log -- <filename>

将显示提交,但我无法找到实现此目的的方法。

谢谢!

2 个答案:

答案 0 :(得分:7)

来自git log --help

[--] <path>...
    Show only commits that affect any of the specified paths.

您希望git log <path>...显示影响指定路径的提交。那不会发生。

但是,您可以将文件名放在提交消息中,然后使用git log --grep=<filename>

也许你不想在提交消息中使用它?然后将其放入提交说明中:git notes add -m <filename>。你可能不得不写一个小脚本来grep for notes,但是git plumbing应该会很容易。

答案 1 :(得分:5)

无法做到这一点的原因是,对于git,commit是该点项目中所有文件状态的快照,受影响的文件稍后推断通过将提交与其父级进行比较。 (受影响的文件只是两者之间不同的文件。)因此,没有办法人为地将路径标记为受影响,因为提交实际上并不直接存储该信息。

您可以做的一件事是更改相关路径上的文件权限(例如,设置或取消设置组可写) - 即使文件内容相同,也会将其作为更改捕获。并且您可以始终拥有两个相邻的提交 - 一个更改权限,另一个更改它们 - 如果您不希望权限保持更改。它有点乱,但它会起作用,特别是如果文件权限在你的情况下并不重要。