【发布时间】:2023-03-03 09:09:21
【问题描述】:
我想知道如何 gitignore 文件,但只能在本地,而不是推送它(因为从事该项目的其他人不应该得到我在那里添加的文件的 gitignore 更新。
简单来说,在 git status 之后我只有:
modified: .gitignore
因为我将要忽略的文件添加到我的 gitignore 但现在我希望上面的行在不推送的情况下消失。
【问题讨论】:
我想知道如何 gitignore 文件,但只能在本地,而不是推送它(因为从事该项目的其他人不应该得到我在那里添加的文件的 gitignore 更新。
简单来说,在 git status 之后我只有:
modified: .gitignore
因为我将要忽略的文件添加到我的 gitignore 但现在我希望上面的行在不推送的情况下消失。
【问题讨论】:
VSCode 中的另一个选项是使用 Git Exclude 扩展名,它基本上可以通过右键单击将任何文件/文件夹添加到您的 .git/info/exclude 文件中
【讨论】:
对于本地忽略 you should use the .git/info/exclude file,而不是 .gitignore:
特定于特定存储库但不需要与其他相关存储库共享的模式(例如,存在于存储库中但特定于一个用户工作流的辅助文件)应放入
$GIT_DIR/info/exclude文件。
这两个文件接受相同的格式。
【讨论】:
.gitignore 文件包含要防止提交/推送到远程仓库的文件和文件夹的列表。
但是,提交和推送.gitignore 文件总是可以接受的。这是一种非常普遍的做法。因此,提交 .gitignore 文件并继续编写您的代码。
阅读此thread 以获取有关提交.gitignore 文件的参考/良好做法。
【讨论】:
应该提交 Gitignore 文件,因为在大多数情况下,您忽略的内容也会被团队中的其他开发人员忽略。
但如果您绝对需要将其排除在本地更改跟踪之外,您可以执行以下操作:
git update-index --assume-unchanged .gitignore
这会使它从修改后的列表中“消失”。尽管如果其他人更改它,您将不会在拉动时得到更改。然后,您需要执行以下操作以将其带回跟踪列表并再次拉取:
git update-index --no-assume-unchanged .gitignore
【讨论】:
git update-index --assume-unchanged 是最好避免使用的脚炮。原因在于名称——即使你确实改变了一些东西,忽略你所做的事实。 git status 会说一切都已提交并且工作正常,即使您对现实的看法与另一个拥有“相同”(但实际上不是)代码版本的人的看法不同。在这种情况下,您最好使用.git/info/exclude。