如何让 git 中的文件默认同步但在提交时被忽略?
How to have a file in git that syncs default but is ignored for commits?
我们有一个文件,其中包含一些对我们的软件有用的调试配置。我们希望这个文件同步到每个开发人员的机器上。但是开发人员可能会修改该文件,我们真的不希望签入特定调试会话的影响。与 git 同步的默认 .ini
文件也会出现类似的问题,但我们希望能够在开发期间修改但不能签入。
我们认为我们可以提交文件一次,然后将其添加到 .gitignore
文件,但这不起作用 -- 文件仍然显示为 git status
中的更改。我们还发现了这些命令:
git update-index --assume-unchanged <file>
git update-index --skip-worktree <file>
但这些必须 运行 在每个开发人员的机器上——他们修改本地状态,而不是签入远程存储库以同步到每台机器的状态。
有什么方法可以让一个文件在其默认状态下签入和同步,但可以在不显示为差异的情况下进行修改?
我能找到的最接近答案的是这个
Ignore a file from future commits but leave that on repo,但这并不能阻止文件在开发人员的机器上看起来像差异。
这在 Git 中是不可能的,至少不是你想要的方式。
答案在the Git FAQ中给出。
How do I ignore changes to a tracked file?
Git doesn’t provide a way to do this.
解决方法是使用不同的文件,例如default.ini.template
,并在那里添加您的默认值。然后开发人员需要将文件复制到其真实名称default.ini
。因为你很可能会使用构建自动化工具(make,gradle,maven),你可以在那里添加一个任务来为你执行复制,或者向需要执行一次的 repo 添加一个简单的脚本开发者
我们有一个文件,其中包含一些对我们的软件有用的调试配置。我们希望这个文件同步到每个开发人员的机器上。但是开发人员可能会修改该文件,我们真的不希望签入特定调试会话的影响。与 git 同步的默认 .ini
文件也会出现类似的问题,但我们希望能够在开发期间修改但不能签入。
我们认为我们可以提交文件一次,然后将其添加到 .gitignore
文件,但这不起作用 -- 文件仍然显示为 git status
中的更改。我们还发现了这些命令:
git update-index --assume-unchanged <file>
git update-index --skip-worktree <file>
但这些必须 运行 在每个开发人员的机器上——他们修改本地状态,而不是签入远程存储库以同步到每台机器的状态。
有什么方法可以让一个文件在其默认状态下签入和同步,但可以在不显示为差异的情况下进行修改?
我能找到的最接近答案的是这个 Ignore a file from future commits but leave that on repo,但这并不能阻止文件在开发人员的机器上看起来像差异。
这在 Git 中是不可能的,至少不是你想要的方式。
答案在the Git FAQ中给出。
How do I ignore changes to a tracked file?
Git doesn’t provide a way to do this.
解决方法是使用不同的文件,例如default.ini.template
,并在那里添加您的默认值。然后开发人员需要将文件复制到其真实名称default.ini
。因为你很可能会使用构建自动化工具(make,gradle,maven),你可以在那里添加一个任务来为你执行复制,或者向需要执行一次的 repo 添加一个简单的脚本开发者