2

我们有一个带有文件的 repo,它说x.APK是由客户端机器提取的。
这些客户端计算机将修改此文件并将其保存在本地以供使用。

在正常使用中,我们很少会在 2-3 个月内更新此文件。
第一次它会拉出许多文件x.APK并对其进行修改并将其存储在本地。然后我们更新其他文件并推送。在拉入客户端时,我们得到了本地更改,但由于x.APK没有更改,因此没有冲突。
现在有什么方法可以更新x.APK忽略对该文件所做的任何本地更改git pull

git pull由脚本完成,我们无法始终访问客户端。所以运行其他命令会很棘手。

我们尝试了:

git update-index --assume-unchanged

这忽略了更改,但无法拉

使用gitignore它将从客户端和我们不想要的 repo 中删除文件。

如果有人可以提供帮助,那将是一个特殊的案例。

4

1 回答 1

0

这取决于在 x.txt 中进行的本地修改的性质。

如果这些修改定义明确(而不是全部x.txt),那么您可以考虑使用内容过滤器驱动程序,以便x.txt在结帐时生成正确的:

  • 这意味着您不再版本x.txt,而是模板版本“ x.template”。
    git mv x.txt x.txt.tpl.
    添加x.txt到您的.gitignore.

  • 然后,在声明x.txt中添加与文件关联的涂抹脚本:.gitattributes

    x.txt filter=updatex
    

弄脏
(图片来自“ Customizing Git - Git Attributes ”,来自“ Pro Git book ”)

git config filter.updatex.smudge 'update_x'

style_smudge脚本可以进行版本控制,并且必须从 repo 外部的文件中获取本地修改内容(意味着那些私有修改),并将其内容注入模板中以生成实际的x.txt.

这样,触发工作树更新的 a 将使用新的更新以及本地修改git pull自动重新生成。x.txt

于 2016-01-29T09:40:07.813 回答