源代码管理常见问题解答
本主题回答了有关在 Visual Studio Code 中使用 Git 源代码管理和 GitHub 的常见问题。
Git
如何撤销或回滚 Git 提交?
使用 Git: Undo Last Commit(Git:撤销上次提交)命令可以撤销您的最后一次提交。这将把您的分支重置为提交之前的状态,包括所有更改。该命令也可以在“源代码管理”视图顶部“提交”旁边的更多操作 ... 菜单中找到。
如何重命名本地分支?
Git: Rename Branch…(Git:重命名分支...)命令将提示您输入新名称。
如何在提交前撤销 git add 操作?
列在暂存的更改中的已添加文件,可以通过 - 图标或拖放操作取消暂存。
如何编辑最近一次的提交信息?
要更新上一次本地提交的提交信息,请使用 Git: Commit Staged (Amend)(Git:暂存提交(修补))命令。它将打开一个编辑器供您修改并保存上一条信息。请确保没有其他更改处于暂存状态,否则它们也会被包含在提交中。
我初始化了存储库,但 ... 菜单中的操作都是灰色的
要推送 (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 中没有配置凭据管理,并且由于某种原因您没有收到凭据提示。
您可以随时设置 凭据助手 (credential helper),以便从远程服务器拉取和推送,而无需 VS Code 每次都提示您输入凭据。
如何使用需要多重身份验证的 Azure DevOps 组织登录 Git?
Git Credential Manager (GCM) 是 Windows、macOS 和 Linux 上推荐的 Git 凭据助手。如果您运行的是 Windows 版 Git,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 帐户登录。
故障排除
如需诊断和解决 Git 问题的帮助,请参阅 故障排除指南。该指南涵盖了使用 Git 输出日志以及启用跟踪日志以获取详细的诊断信息。