Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020
Visual Studio 2019 |Visual Studio 2022
项目中的每个文件都不需要通过 Git 进行跟踪。 通常不需要跟踪的文件示例包括开发环境中的临时文件、测试输出和日志。
可以使用多种机制通知 Git 不应跟踪项目中的文件,并确保 Git 不会报告这些文件的更改。 对于 Git 未跟踪的文件,可以使用或.gitignoreexclude文件。 对于 Git 已跟踪的文件,可以指示 Git 停止跟踪它们并忽略任何更改。
先决条件
| 类别 | 要求 |
|---|---|
| 项目访问权限 | 项目的成员。 |
| 权限 | - 查看专用项目中的代码:至少 是基本 访问权限。 - 克隆或参与专用项目中的代码: 参与者 安全组的成员或项目中的相应权限。 - 设置分支或存储库权限: 管理 分支或存储库的权限。 - 更改默认分支: 编辑存储库的策略 权限。 - 导入存储库: 项目管理员 安全组的成员或 Git 项目级 “创建存储库 ”权限设置为 “允许”。 有关详细信息,请参阅 “设置 Git 存储库权限”。 |
| Services | 已启用存储库。 |
| 工具 | 可选。 使用 az repos 命令: Azure DevOps CLI。 |
注释
在公共项目中,具有 利益干系人 访问权限的用户具有对 Azure Repos 的完全访问权限,包括查看、克隆和参与代码。
使用 .gitignore 文件
可以通过添加和配置 .gitignore 文件,告知 Git 不要跟踪项目中的某些文件。 查看以下要点:
-
未跟踪的文件:文件中的条目
.gitignore仅适用于未跟踪的文件。 它们不会阻止 Git 报告对已跟踪文件的更改。 跟踪的文件是提交并存在于最后一个 Git 快照中的文件。 -
文件搜索模式:文件中的每一行
.gitignore都指定相对于.gitignore文件路径的文件搜索模式。 .gitignore 语法很灵活,支持使用通配符按名称、扩展名和路径指定单个或多个文件。 Git 将.gitignore搜索模式与项目中的文件匹配,以确定要忽略的文件。 -
位置:通常,将文件
.gitignore添加到项目的根文件夹。 但是,可以将文件添加到.gitignore任何项目文件夹,让 Git 知道该文件夹中要忽略的文件及其子文件夹中的任何嵌套深度。 对于多个.gitignore文件,文件在文件夹中指定的文件搜索模式.gitignore优先于文件在父文件夹中指定的模式.gitignore。 -
创建:可以手动创建
.gitignore文件并向其添加文件模式条目。 或者,可以通过从 GitHub.gitignore下载开发环境的模板来节省时间。 -
优点:使用文件的好处之一
.gitignore是可以 提交 更改并将其与他人共享。
Visual Studio 2022 通过解决方案资源管理器中的 Git 菜单、Git 更改和快捷菜单提供 Git 版本控制体验。 Visual Studio 2019 版本 16.8 还提供 团队资源管理器 Git 用户界面。 有关详细信息,请参阅 Visual Studio 2019 - 团队资源管理器 选项卡。
在 “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 to prevent ignoring 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 标志,因为更改文件内容的 Git pull 作可以还原 assume-unchanged 标志。
git update-index --assume-unchanged <file path>
若要恢复跟踪,请使用 git update-index 标志运行命令 --no-assume-unchanged 。
使用 git rm 忽略更改
某个或.gitignore文件中的条目exclude对 Git 已跟踪的文件没有影响。 Git 跟踪以前提交的文件。 若要从 Git 快照中永久删除文件,以便 Git 不再跟踪它,但不从文件系统中删除该文件,请运行以下命令:
git rm --cached <file path>
git commit <some message>
然后,使用或.gitignoreexclude文件条目防止 Git 报告对文件的更改。