源代码管理 FAQ
本主题回答了有关在 Visual Studio Code 中使用 Git 源代码管理和 GitHub 的常见问题。
Git
如何恢复或撤销一次 Git 提交?
使用 Git:撤销上次提交 (Git: Undo Last Commit) 命令来恢复你的上一次提交。这会将你的分支重置到提交前的状态,包括所有更改。该命令也可以在源代码管理视图顶部的 提交 (Commit) 下的 更多操作 (More Actions) ...
菜单中找到。
如何重命名本地分支?
Git: 重命名分支… (Git: Rename Branch…) 命令会提示你输入新名称。
如何在提交前撤销 git add?
在 暂存的更改 (Staged Changes) 中列出的已添加文件可以使用 - 图标或通过拖放来取消暂存。
如何编辑最近一次的提交信息?
要更新本地最后一次提交的提交信息,请使用 Git: 提交暂存的内容(修订)(Git: Commit Staged (Amend)) 命令。它会打开一个编辑器来编辑和保存最后一次的提交信息。请确保没有其他更改被暂存,否则它们也会被包含在该次提交中。
我初始化了我的仓库,但是 ...
菜单中的所有操作都是灰色的
要进行 推送 (push)、拉取 (pull) 和同步 (sync),你需要设置一个 Git 源 (origin)。你可以从仓库托管方获取所需的 URL。获得该 URL 后,你需要通过运行几个命令行操作将其添加到 Git 设置中。例如:
> git remote add origin https://github.com/<repo owner>/<repo name>.git
> git push -u origin main
我的团队使用的是 Team Foundation Version Control (TFVC) 而不是 Git。我该怎么办?
使用 Azure Repos 扩展,这会启用对 TFVC 的支持。
为什么“拉取”、“推送”和“同步”操作一直无法完成?
这通常意味着 Git 中没有配置凭据管理,并且由于某些原因你没有收到凭据提示。
你随时可以设置一个凭据帮助程序,以便从远程服务器拉取和推送到远程服务器,而无需 VS Code 每次都提示你输入凭据。
如何使用需要多重身份验证的 Azure DevOps 组织账户登录 Git?
Git Credential Manager (GCM) 是推荐用于 Windows、macOS 和 Linux 的 Git 凭据帮助程序。如果你正在运行 Git for Windows,GCM 已经为你安装和配置好了。如果你在 macOS 或 Linux 上运行,GCM 的 README 中有设置说明。
我的电脑上安装了 GitHub Desktop,但 VS Code 忽略了它
VS Code 的 Git 集成仅支持官方 Git 发行版。
只要 VS Code 正在运行,我就会一直收到 Git 身份验证对话框
VS Code 会自动从服务器获取更改,以便向你显示传入更改的摘要。Git 身份验证对话框独立于 VS Code 本身,是你当前 Git 凭据帮助程序的一部分。
避免这些提示的一种方法是设置一个可以记住你凭据的凭据帮助程序。
另一个选择是通过更改以下设置来禁用自动获取功能:"git.autofetch": false
。
为什么 VS Code 会警告我 Git 仓库可能不安全?
VS Code 使用 git.exe
来执行所有 Git 操作。从 Git 2.35.2 开始,如果仓库所在的文件夹所有者不是当前用户,则会阻止用户在该仓库中运行 Git 操作,因为该仓库被视为可能不安全。
如果你尝试打开这样的仓库,VS Code 将在源代码管理视图中显示一个欢迎视图或一个错误通知。欢迎视图和通知都包含 管理不安全的仓库 (Manage Unsafe Repositories) 命令,该命令可让你查看可能不安全的仓库列表,将其标记为安全,然后打开它们。管理不安全的仓库 (Manage Unsafe Repositories) 命令也可以在命令面板(⇧⌘P (Windows、Linux 为 Ctrl+Shift+P))中找到。将仓库标记为安全会把仓库位置添加到 safe.directory
git 配置中。
在 Windows 上,出现这种情况的一个常见场景是,使用一个“以管理员身份”运行的应用程序(例如,Windows Terminal 或 VS Code)克隆了一个仓库,但之后使用另一个不“以管理员身份”运行的应用程序或实例(例如,VS Code)打开该仓库。
为什么 VS Code 没有在工作区或打开文件的父文件夹中发现 Git 仓库?
VS Code 使用 git rev-parse --show-toplevel
来确定 Git 仓库的根目录。在大多数情况下,Git 仓库的根目录位于工作区内,但在某些场景下,Git 仓库的根目录可能位于工作区或打开文件的父文件夹中。虽然在工作区或打开文件的父文件夹中打开 Git 仓库对于高级用户来说是一个很好的功能,但它可能会让新用户感到困惑。我们见过一些案例,这种困惑导致用户丢弃了这些 Git 仓库中的更改,造成了数据丢失。
为了避免混淆并降低数据丢失的风险,VS Code 将在源代码管理视图中显示一个通知和一个新的欢迎视图,并且不会自动从工作区和打开文件的父文件夹中打开 Git 仓库。
你可以使用 git.openRepositoryInParentFolders 设置来控制如何处理来自父文件夹的 Git 仓库。如果你想恢复以前的行为,请将 git.openRepositoryInParentFolders 设置为 always
。
我可以在 VS Code 中使用 SSH Git 身份验证吗?
可以,尽管 VS Code 与没有密码短语的 SSH 密钥配合使用最为简便。如果你的 SSH 密钥带有密码短语,你需要从 Git Bash 提示符启动 VS Code,以继承其 SSH 环境。
GitHub
是否支持 GitHub Enterprise?
VS Code 官方支持通过 GitHub Enterprise Servers 进行身份验证。打开一个 GHES 仓库的本地检出副本,你将被提示使用你的 GitHub Enterprise Server 账户登录。