源代码控制常见问题解答

本主题回答有关在 Visual Studio Code 中使用 Git 源代码管理和 GitHub 的常见问题。

git

如何恢复或撤消 Git 提交?

使用Git: Undo Last Commit命令恢复上次提交。这会将您的分支重置为提交之前的状态,包括所有更改。该命令还可以在“源代码管理”视图顶部的“提交”下的“更多操作” 中作为菜单使用。...

如何重命名本地分支?

Git :重命名分支...命令将提示您输入新名称。

如何在提交之前撤消 git add?

可以使用-图标或通过拖放来取消暂存“暂存更改”中列出的添加文件。

如何编辑最近的提交消息?

要更新上次本地提交的提交消息,请使用Git: Commit Staged (Amend)命令。它将打开一个编辑器来编辑并保存最后一条消息。确保没有暂存其他更改,因为它们将包含在提交中。

我初始化了我的存储库,但菜单中的操作...全部呈灰色

推送、拉取和同步,您需要设置 Git 源。您可以从存储库主机获取所需的 URL。获得该 URL 后,您需要通过运行几个命令行操作将其添加到 Git 设置中。例如:

> git remote add origin https://github.com/<repo owner>/<repo name>.git
> git push -u origin main

我的团队正在使用 Team Foundation 版本控制 (TFVC) 而不是 Git。我应该怎么办?

使用Azure Repos扩展,这将点亮 TFVC 支持。

为什么拉取、推送和同步操作永远不会完成?

这通常意味着 Git 中没有配置凭据管理,并且由于某种原因您没有收到凭据提示。

您始终可以设置凭据帮助程序,以便从远程服务器拉取和推送,而无需 VS Code 每次都提示您输入凭据。

如何通过需要多重身份验证的 Azure DevOps 组织登录 Git?

Git Credential Manager (GCM) 是推荐用于 Windows、macOS 和 Linux 的 Git 凭据帮助程序。如果您运行的是 Windows 版 Git,则已经为您安装并配置了 GCM。如果您在 macOS 或 Linux 上运行,GCM自述文件 包含设置说明。

我的计算机上安装了 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 将在源代码管理视图中显示欢迎视图或错误通知。欢迎视图和通知都包含“管理不安全存储库”命令,您可以使用该命令查看潜在不安全存储库的列表,将它们标记为安全,然后打开它们。命令面板 ( ⇧⌘P (Windows、Linux Ctrl+Shift+P ) ) 中也提供了“管理不安全存储库”命令。将存储库标记为安全会将存储库位置添加到git 配置中。safe.directory

在 Windows 上,发生这种情况的常见情况是,使用“以管理员身份”运行的应用程序(例如 Windows 终端或 VS Code)克隆存储库,但使用其他应用程序或实例(例如, VS Code),不以“管理员身份”运行。

为什么 VS Code 无法在工作区或打开文件的父文件夹中发现 Git 存储库?

VS Code 用于git rev-parse --show-toplevel确定 Git 存储库的根。在大多数情况下,Git 存储库的根位于工作区内部,但在某些情况下,Git 存储库的根位于工作区的父文件夹或打开的文件中。虽然在工作区的父文件夹中打开 Git 存储库或打开文件对于高级用户来说是一个很棒的功能,但对于新用户来说可能会感到困惑。我们已经看到过这种混乱导致放弃这些 Git 存储库中的更改并导致数据丢失的情况。

为了避免混淆并降低数据丢失的风险,VS Code 将在源代码管理视图中显示通知和新的欢迎视图,并且不会自动从工作区的父文件夹中打开 Git 存储库并打开文件。

您可以使用该设置控制如何处理父文件夹中的 Git 存储库git.openRepositoryInParentFolders。如果您想恢复旧的行为,请将设置git.openRepositoryInParentFolders设置为always

我可以将 SSH Git 身份验证与 VS Code 结合使用吗?

是的,尽管 VS Code 使用 SSH 密钥(无需密码)最轻松地工作。如果您有带有密码的 SSH 密钥,则需要从 Git Bash 提示符启动 VS Code 以继承其 SSH 环境。

GitHub

是否支持 GitHub Enterprise?

VS Code 官方支持 GitHub Enterprise Server 身份验证。打开 GHES 存储库的本地签出,系统将提示您使用 GitHub Enterprise Server 帐户登录。