假设 GIT 存储库中有三个文件:
.gitignore (file content: config.py)
config.py
main.py
当我们使用
git clone https://github.com/example/test
克隆此存储库时,我们现在在一个文件夹中拥有这 3 个文件,这是可以的。
现在让我们对
config.py
进行本地修改。
然后几天后,我们想用
git pull
拉取最新的修改。问题:它也想合并config.py
:
错误:您对以下文件的本地更改将被合并覆盖: 配置.py
这是我们不想要的。
TL;DR,这是所需的工作流程:
git clone ...
期间,应克隆config.py
git pull ...
期间,如果config.py
已被本地修改,则不应拉动/合并/覆盖处理这种情况的标准方法是什么?
标准方法是将
config.py.template
(或任何你想称呼的名称)放入存储库中,并使用 config.py
的格式和默认值。想要使用该存储库的人需要克隆该存储库,将该文件复制到 config.py
,然后进行本地更改。
一个稍微不同的选项是使用 CI/CD 拒绝任何修改
config.py
的提交。但这并不是很有用,因为您将无法更新 config.py
以包含新选项或删除旧选项。
请注意,
.gitignore
不具有追溯力 - 如果您已经添加了 config.py
,那么您需要运行 git rm --cached config.py
将其从索引中删除。