在 Visual Studio 中管理 Git 存储库
Git 存储库 窗口提供全屏 Git 体验,可帮助你管理 Git 存储库并随时了解团队的项目。 例如,你可能需要重置、还原、挑拣提交或仅清理提交历史记录。 Git 存储库 窗口也是可视化和管理分支的绝佳位置。
使用 Visual Studio 和 Git 进行版本控制很简单。 此外,还可以与所选的 Git 提供程序(例如 GitHub 或 Azure DevOps)远程协作。 或者,你可以在没有任何提供商的情况下本地工作。
打开“Git 存储库”窗口
若要打开 Git 存储库 窗口,请选择 视图>Git 存储库(或 按 Ctrl+0、Ctrl+R),或按 Ctrl+Q,然后在 功能下搜索 Git 存储库。
使用 GitHub Copilot Chat 解释提交
借助 Visual Studio 2022 版本 17.10 预览版 2 及更高版本和 GitHub Copilot 扩展,可以使用 AI 生成详细提交说明,描述该提交中的更改。 按下 “解释” 按钮以请求 GitHub Copilot 创建提交说明。 若要安装 GitHub Copilot,请参阅 在 Visual Studio 中安装和管理 GitHub Copilot。
更改上次提交(修正)
更新最后一个提交在 Git 中称为修正,这是一个常见的用例。 有时你只需更新提交消息,否则可能需要包含最新的更改。
可以使用以下命令在命令行上修改提交记录:
git commit --amend
Git 存储库 窗口可以轻松更新最新的提交消息。 双击上次提交打开上次提交的提交详细信息,然后选择提交消息旁边的“编辑”选项。
编辑完提交消息后,选择“修正”。
如果需要包含对上次提交的代码更改,可以在 Git 更改 窗口中执行此操作。 选中“修改”复选框,然后提交更改。
若要了解有关修改的详细信息,包括如何更改除最近一次之外的提交消息,请参阅 Git 网站上的 Git 工具 - 重写历史。
合并提交 (Squash)
为了合并一系列提交,Git 提供了一个选项,可以将提交压缩为单个提交。 如果您经常提交代码,并因此产生一个很长的提交列表,并在推送到远程存储库之前希望进行清理,那么此选项会非常有用。
你可以使用以下命令在命令行中 Squash 两个提交:
git rebase -i HEAD~2
将 pick
修改为 squash
,然后保存并更新提交消息。
若要在 Visual Studio 中合并提交,请使用 Ctrl 键选择要合并的多个提交。 然后单击右键并选择“Squash 提交”。 Visual Studio 会自动合并提交消息,但有时最好提供更新的消息。 查看并更新提交消息后,选择“Squash”按钮。
若要了解有关 Squash 的详细信息,请参阅 Git 网站上的 Git 工具 - 重写历史记录。
合并和变基分支
如果使用 Git 分支开发不同的功能,那么有时需要合并其他分支引入的更新。 当你仍在处理功能分支时,可能会发生这种情况。 此外,当你已处理功能分支并且需要通过将其添加到另一个分支来保留更改时,也可能会发生这种情况。 在 Git 中,可以通过合并或重新分组分支来包括这些更新。
备注
以下说明使用 New_Feature 作为功能分支的示例名称。 将其替换为你自己的分支名称。
若要在命令行上将主分支合并到功能分支中,请使用以下命令:
git checkout New_Feature
git merge main
若要在 Visual Studio 中执行相同的操作,请在分支列表中双击该功能分支。 然后右键单击 main,选择 将“main”合并为“New_Feature”。
若要在命令行上将主分支重新设置为功能分支,请使用以下命令:
git checkout New_Feature
git rebase main
若要在 Visual Studio 中执行相同的操作,请在分支列表中双击该功能分支。 然后右键单击主分支并选择“将‘New_Feature 分支’变基到‘主分支’”。
若要了解有关合并、重新分组和分支的详细信息,请参阅 Git 网站上的 Git 分支。
复制提交(挑拣)
使用挑拣选项将提交从一个分支复制到另一个分支。 与合并或变基不同,挑拣仅引入所选提交中的更改,而不是分支中的所有更改。 樱桃采摘是解决这些常见问题的好方法:
- 意外提交错误分支。 将更改挑拣到正确的分支,然后将原始分支重置为以前的提交。
- 拉取在功能分支中进行的一组提交,以便更快地将它们合并回主分支。
- 在不变基分支的情况下,从主分支植入特定提交。
若要通过命令行将提交的更改复制到当前分支,请使用以下命令:
git cherry-pick 7599e530
若要在 Visual Studio 中执行相同操作,请单击选中要从中挑拣提交的分支以预览该分支。 然后右键单击目标提交,选择“挑拣”。
操作完成后,Visual Studio 会显示成功消息。 你挑拣的提交将显示在“传出”部分。
若要了解有关挑拣提交的详细信息,请参阅挑拣命令的 Git 网页。
还原更改
使用还原命令可撤消推送到共享分支的提交中所做的更改。 revert 命令创建一个新提交,用于撤消对上一次提交所做的更改。 revert 命令不会重写存储库历史记录,这使得在与他人合作时可以安全地使用。
若要使用命令行还原提交中所做的更改,请使用以下命令。 将示例 ID 替换为分支中实际提交的 ID。
git revert 53333305
git commit
在前面的示例中,这些命令将撤消在提交53333305中所做的更改,并在分支上创建新提交。 原始提交仍在 Git 历史记录中。 若要在 Visual Studio 中执行相同操作,请右键单击要还原的提交,然后选择“还原”。 确认操作并完成该操作后,Visual Studio 将显示一条成功消息,并且“传出”部分会显示新提交。
选择新提交,确认它撤消了对已还原提交的更改。
在某些情况下,例如在合并提交时或在运行 Git 操作时,“还原”菜单项可能会变成灰色(即已禁用)。
若要了解有关还原更改的详细信息,请参阅还原命令 的Git 网页。
将分支重置为以前的状态
使用重置命令将本地存储库中的分支移回上一个提交的内容。 此操作将放弃自要重置分支的提交以来发生的所有更改。
警告
请勿重置共享分支,因为可能会删除其他人的工作。 请改用还原命令。
若要使用命令行将分支重置为以前的状态,请使用以下命令。 将示例 ID 替换为分支中实际提交的 ID。
git reset --hard 53333305
命令 --hard
部分告知 Git 将文件重置为上一提交的状态,并放弃任何暂存更改。 若要在 Visual Studio 中执行相同操作,请右键单击要重置分支的提交,然后选择“重置”>“删除更改(--hard)”。
若要了解有关重置分支的详细信息,请参阅 Git 网页中的重置命令。
相关内容
- 使用多个存储库
- Visual Studio 中的 Git 体验