源代码控制常见问题解答

本主题回答了关于在Visual Studio Code中使用Git源代码控制和GitHub的常见问题。

Git

如何撤销或回滚一个Git提交?

使用Git: 撤销最后一次提交命令来撤销你的最后一次提交。这将把你的分支重置到提交之前的状态,包括所有的更改。该命令也可以在源代码控制视图顶部的提交下的更多操作 ...菜单中找到。

如何重命名本地分支?

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 凭证助手。如果您正在运行 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 将在源代码管理视图中显示欢迎视图或错误通知。欢迎视图和通知都包含管理不安全仓库命令,该命令允许您查看潜在不安全仓库的列表,将其标记为安全并打开它们。管理不安全仓库命令也可以在命令面板中使用(⇧⌘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 仓库。

您可以使用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 账户登录。