我们有一个包含客户端机器提取的文件x.APK
的仓库
这些客户端计算机将修改此文件并将其保留在本地以供其使用。
在正常使用情况下,我们会在2-3个月内很快更新此文件
它第一次将文件与x.APK
一起拉出来并修改它并将其存储在本地。然后我们更新其他文件并推送。在拉入客户端时,我们得到了本地更改,但由于x.APK
没有更改,因此没有冲突
现在有没有办法更新x.APK
忽略仅使用git pull
对该文件进行的任何本地更改。
git pull
由脚本完成,我们无法始终访问客户端。所以运行其他命令会很棘手。
我们尝试过:
git update-index --assume-unchanged
这会忽略更改,但无法提取
使用gitignore
它将从客户端和repo中删除我们不想要的文件。
如果有人可以提供帮助,这是一个特殊的案例。
答案 0 :(得分:0)
这取决于在x.txt中完成的本地修改的性质。
如果这些修改得到了明确定义(而不是x.txt
中的所有修改),那么您可以考虑使用content filter driver以便在结帐时生成正确的x.txt
:
表示您不再使用x.txt
版本,而是使用模板版本" x.template
"。
git mv x.txt x.txt.tpl
。
将x.txt
添加到您的.gitignore
。
然后,在.gitattributes
declaration中添加与x.txt
个文件相关联的涂抹脚本:
x.txt filter=updatex
(图片来自" Customizing Git - Git Attributes",来自" Pro Git book")
git config filter.updatex.smudge 'update_x'
style_smudge
脚本可以进行版本控制,并且必须从repo外部的文件中获取本地修改内容(意味着那些私有修改),并将其内容注入模板为了生成实际的x.txt
。
这样,触发更新工作树的git pull
会自动使用新更新和本地修改重新生成x.txt
。