3

出于某种原因,我想在我的存储库中有一个空文件。该文件需要存在,但构建过程会更改它,我不希望提交这些更改。我需要克隆我的存储库的用户也忽略此文件的更改。

git update-index --assume-unchanged看起来不错,但它只适用于本地。

你知道我怎么解决这个问题吗?

4

4 回答 4

4

设置一个存储库来保存文件的特定提交状态很容易,并且您可以拒绝任何您不喜欢的入站内容。

要保留文件的特定提交状态:

# do this once when the committed path/to/file is in the state you want
x=`git rev-parse master:path/to/file`
echo path/to/file filter=wired-to-$x >>.gitattributes

# then in each repo that wants it
git config filter.wired-to-$x.clean "git show $x"

pre-receive 钩子测试入站推送,这个简单的一个

#!/bin/sh
set -e
while read old new ref; do
        git ls-tree $new path/to/file \
        | awk '$3 != "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" {
                print "path/to/file is not empty"; exit 1; }'
done

将拒绝包含具有非空路径/到/文件的入站分支提示的任何推送。Sub 在你的“$x”中检查你想要的状态,为了增加完整性,你可以通过一个内部 rev-list 循环来运行所有入站,为 ls-tree 提供数据。

于 2013-10-16T02:55:43.203 回答
4
于 2013-10-21T20:12:51.120 回答
1
于 2013-10-15T19:46:05.547 回答
1

这似乎是一个应用程序的任务,而不是 git 的。我会将此文件添加到 .gitignore 并确保构建过程或使用它的任何其他过程都可以创建它。

于 2013-10-23T15:54:50.377 回答