首页 > 解决方案 > 一个文件需要在 git global repo 中,它应该被 git 忽略

问题描述

我有一个文件必须在每个人的机器以及 git 全局存储库中,然后我必须编辑该文件,它应该被 git 忽略。

我尝试过使用: 1. git rm --cached 2. git update-index --assume-unchanged 3. git update-index --skip-worktree

标签: gitgithubbitbucket

解决方案


Git 不存储文件。Git 存储提交。确实 commits 存储文件——所以你可以Git 存储文件——但 Git 存储的是commits

如果你想在 Git 中存储一个文件,你必须把它放在一些提交集中。就是这么简单。进行包含文件的新提交,您就完成了:文件现在存储在 Git 存储库中。

如果你想从一个特定的提交中获取一个特定的文件,作为一个未跟踪的文件进入你的工作树:好吧,这完全是另一个问题。有很多方法可以做到这一点,包括新的 Git 2.23-or-newer 。目前适用于大多数 Git 品种的一种方法是使用:git restoregit show

git show <commit-specifier>:<path>

将给定路径的内容显示到其标准输出。

您可以让所有用户执行以下操作:

git show your-tag:path/to/file.ext > file.ext

或者:

git show your-branch:path/to/file.ext > file.ext

或者:

git show <raw hash ID>:path/to/file.ext > file.ext

将由原始哈希 IDpath/to/file.ext标记your-tag或命名或给出的一个特定提交中命名的一个特定文件提取到名称下的工作树中。your-branchfile.ext

请注意,如果有人以任何方式签出这个特定的提交,该文件将出现path/to/file.ext在他们的工作树中并被跟踪(在索引中),因为它在那个提交中。签出其他没有该文件的提交path/to/file.ext将从索引和它们的工作树中删除,因为该其他提交没有该文件。这就是为什么我们使用一种技巧,例如git show查看文件而不将其复制到索引中。


推荐阅读