源代码管理常见问题解答
本主题解答了有关在 Visual Studio Code 中使用 Git 源代码管理和 GitHub 的常见问题。
Git
如何撤销或撤销 Git 提交?
使用 Git: 撤销上一次提交 (Git: Undo Last Commit) 命令来撤销您的上一次提交。这将把您的分支重置到进行提交之前的状态,包括所有更改。该命令也可在源代码管理视图顶部的 提交 (Commit) 下的 更多操作 (More Actions) ... 菜单中找到。
如何重命名本地分支?
Git: 重命名分支... (Git: Rename Branch…) 命令会提示您输入新名称。
如何在提交前撤销 git add?
暂存的更改 (Staged Changes) 中列出的已添加文件可以使用 - 图标或通过拖放来取消暂存。
如何编辑最近的提交消息?
要更新上一次本地提交的提交消息,请使用 Git: 暂存并提交 (Amend) (Git: Commit Staged (Amend)) 命令。它将打开一个编辑器来编辑和保存最后的消息。请确保没有其他更改被暂存,否则它们将包含在提交中。
我初始化了我的仓库,但 ... 菜单中的操作都变灰了
要进行 推送、拉取和同步,您需要设置一个 Git 远程 (origin)。您可以从仓库宿主那里获取所需的 URL。拥有该 URL 后,您需要通过运行一些命令行操作将其添加到 Git 设置中。例如
> git remote add origin https://github.com/<repo owner>/<repo name>.git
> git push -u origin main
我的团队使用团队基础版本控制 (TFVC) 而不是 Git。我该怎么办?
使用 Azure Repos 扩展,这将启用 TFVC 支持。
为什么拉取、推送和同步操作永远不会完成?
这通常意味着 Git 中没有配置凭据管理,并且由于某种原因您没有收到凭据提示。
您始终可以设置一个 凭据帮助程序 (credential helper),以便从远程服务器拉取和推送而无需每次都让 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 终端或 VS Code)克隆的,但该仓库是使用不以“管理员身份运行”的另一个应用程序或实例(例如 VS Code)打开的。
为什么 VS Code 无法发现工作区或打开文件的父文件夹中的 Git 仓库?
VS Code 使用 git rev-parse --show-toplevel 来确定 Git 仓库的根目录。在大多数情况下,Git 仓库的根目录位于工作区内部,但在某些情况下,Git 仓库的根目录位于工作区或打开文件(的)父文件夹中。虽然在工作区或打开文件的父文件夹中打开 Git 仓库对于高级用户来说是一个很棒的功能,但对于新用户来说可能会感到困惑。我们遇到过一些情况,这种困惑导致丢弃了来自这些 Git 仓库的更改,从而造成数据丢失。
为避免混淆并降低数据丢失的风险,VS Code 将在源代码管理视图中显示一个通知和一个新的欢迎视图,并且不会自动打开工作区或打开文件的父文件夹中的 Git 仓库。
您可以使用
always。
我可以在 VS Code 中使用 SSH Git 身份验证吗?
可以,尽管 VS Code 最容易使用不带密码短语的 SSH 密钥。如果您有一个带有密码短语的 SSH 密钥,您需要从 Git Bash 提示符启动 VS Code,以继承其 SSH 环境。
GitHub
是否支持 GitHub Enterprise?
VS Code 对与 GitHub Enterprise Server 的身份验证提供官方支持。打开一个 GHES 仓库的本地签出,系统将提示您使用您的 GitHub Enterprise Server 帐户登录。
故障排除
有关帮助诊断和解决 Git 问题,请参阅 故障排除 指南。该指南涵盖了使用 Git 输出日志和启用跟踪日志以获取详细诊断信息。