Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018
Visual Studio 2019 |Visual Studio 2022
并非项目中的每个文件都应由 Git 跟踪。 开发环境中的临时文件、测试输出和日志都是可能不需要跟踪的文件示例。 可以使用不同的机制让 Git 知道项目中不应跟踪哪些文件,并确保 Git 不会报告这些文件的更改。 对于 Git 未跟踪的文件,可以使用或
.gitignore
exclude
文件。 对于 Git 跟踪的文件,可以告诉 Git 停止跟踪这些文件并忽略更改。
本文介绍如何执行以下操作:
使用
.gitignore
文件忽略对未跟踪文件的更改
使用
exclude
文件忽略对未跟踪文件的更改
停止跟踪文件并使用 忽略更改
git update-index
停止跟踪文件并使用 忽略更改
git rm
使用 gitignore 文件
可以通过添加和配置文件
.gitignore
来告知 Git 不要跟踪项目中的某些文件。 文件中的
.gitignore
条目仅适用于未跟踪的文件,并且不会阻止 Git 报告对所跟踪文件的更改。 跟踪的文件是提交并存在于最后一个 Git 快照中的文件。
文件中的每一行
.gitignore
都指定相对于
.gitignore
文件路径的文件搜索模式。 语法
.gitignore
很
灵活,支持使用通配符按名称、扩展名和路径指定单个或多个文件。 Git 将
.gitignore
搜索模式与项目中的文件匹配,以确定要忽略的文件。
通常,只需将文件
.gitignore
添加到项目的根文件夹。 但是,可以将文件
.gitignore
添加到任何项目文件夹,让 Git 知道在该文件夹及其子文件夹中忽略的任何嵌套深度的文件。 对于多个
.gitignore
文件,文件夹内文件指定的
.gitignore
文件搜索模式优先于父文件夹中文件指定的
.gitignore
模式。
你可以手动创建文件
.gitignore
并向其添加文件模式条目,或者通过从 GitHub
gitignore
存储库下载
.gitignore
开发环境的模板来节省时间。 使用文件的好处之一
.gitignore
是可以
提交
更改并与其他人共享。
创建新的
Git 存储库
时,Visual Studio 会自动为 Visual Studio 开发环境创建
.gitignore
文件。
Visual Studio 2022 通过使用 Git 菜单、
Git 更改
以及
解决方案资源管理器
中的上下文菜单提供
Git
版本控制体验。 Visual Studio 2019 版本 16.8 还提供
团队资源管理器
Git 用户界面。 有关详细信息,请参阅
Visual Studio 2019 - 团队资源管理器
选项卡。
在
“Git 更改
”窗口中,右键单击希望 Git 忽略的任何已更改文件,然后选择
“忽略此本地项目
”或
“忽略此扩展
”。 对于跟踪的文件,这些菜单选项不存在。
Visual Studio 2019 版本 16.8 及更高版本提供 Git 版本控制体验,同时维护
团队资源管理器
Git 用户界面。 若要使用
团队资源管理器
,请从菜单栏中取消选中
“工具
>
选项
>
预览功能
”新增
> Git 用户体验。 可以从任一接口互换使用 Git 功能。
在
团队资源管理器
的
“更改
”视图中,右键单击希望 Git 忽略的任何已更改文件,然后选择
“忽略此本地项目
”或
“忽略此扩展
”。 对于跟踪的文件,这些菜单选项不存在。
“忽略此本地项
”选项将新条目添加到
.gitignore
文件,并从已更改的文件列表中删除所选文件。
“忽略此扩展
”选项将新条目添加到
.gitignore
文件,并从已更改的文件列表中删除与所选文件相同的扩展名的所有文件。
如果存储库的根文件夹中尚不存在文件,则任一选项将创建一个
.gitignore
文件,并为其添加一个条目。
编辑 gitignore 文件
文件中的每个条目
.gitignore
都是:一个文件搜索模式,用于指定要忽略的文件、以注释开头
#
的注释,或用于可读性) 的空白行 (。 语法
.gitignore
很
灵活,支持使用通配符按名称、扩展名和路径指定单个或多个文件。 所有文件搜索模式路径都相对于
.gitignore
文件。
下面是常见文件搜索模式的一些示例:
# Ignore all files with the specified name.
# Scope is all repo folders.
config.json
# Ignore all files with the specified extension.
# Scope is all repo folders.
*.json
# Add an exception so as to not ignore a file with the specified name.
# Scope is all repo folders.
!package.json
# Ignore a file with the specified name.
# Scoped to the 'logs' subfolder.
/logs/test.logfile
# Ignore all files with the specified name.
# Scoped to the 'logs' subfolder and all folders beneath it.
/logs/**/test.logfile
# Ignore all files in the 'logs' subfolder.
/logs/
修改文件后 .gitignore
,Git 会立即更新它忽略的文件列表。
Windows 用户必须在文件中使用正斜杠路径分隔符 .gitignore
,而不是反斜杠。 指定文件夹时,所有用户都必须添加尾随 /
。
使用全局 gitignore 文件
可以将文件 .gitignore
指定为应用于所有本地 Git 存储库的全局忽略文件。 为此,请使用 git config
如下所示的命令:
git config core.excludesfile <gitignore file path>
全局 .gitignore
文件有助于确保 Git 不会在任何本地存储库中提交某些文件类型,例如已编译的二进制文件。 存储库特定 .gitignore
文件中的文件搜索模式优先于全局 .gitignore
文件中的模式。
使用排除文件
还可以将文件搜索模式条目添加到 exclude
本地存储库文件夹中的文件 .git/info/
。 该文件 exclude
让 Git 知道要忽略哪些未跟踪的文件,并使用与文件相同的文件搜索模式语法 .gitignore
。
文件中的 exclude
条目仅适用于未跟踪的文件,并且不会阻止 Git 报告对已跟踪的已提交文件的更改。 每个存储库中只有一个 exclude
文件。
由于 Git 不会提交或推送 exclude
文件,因此可以安全地使用它来忽略本地系统上的文件,而不会影响其他人。
使用 Git update-index 忽略更改
有时,可以暂时停止跟踪本地存储库文件,并让 Git 忽略对文件的更改。 例如,你可能想要为开发环境自定义设置文件,而不会提交更改的风险。 为此,可以使用标志运行 git update-index
命令 skip-worktree
:
git update-index --skip-worktree <file path>
若要恢复跟踪,请使用标志运行 git update-index
命令 --no-skip-worktree
。
或者,你可以暂时停止跟踪文件,并让 Git 忽略对文件的更改,方法是使用 git update-index
带有标志的 assume-unchanged
命令。 此选项比 skip-worktree
标志效率低,因为 assume-unchanged
可以通过更改文件内容的 Git pull
操作还原标志。
git update-index --assume-unchanged <file path>
若要恢复跟踪,请使用标志运行 git update-index
命令 --no-assume-unchanged
。
使用 Git rm 忽略更改
或exclude
文件中的.gitignore
条目对 Git 已跟踪的文件没有任何影响。 Git 跟踪之前提交的文件。 若要从 Git 快照中永久删除文件,以便 Git 不再跟踪该文件,但不从文件系统中删除该文件,请运行以下命令:
git rm --cached <file path>
git commit <some message>
然后,使用 .gitignore
或 exclude
文件条目防止 Git 报告对文件的更改。
查看历史记录
Git 存储库的新增功能? 了解更多
使用提交保存工作