VSCode 怎么用 Git?内置 Git 功能和常见操作图文指南
VSCode 内置了 Git 支持,日常的 commit、diff、branch、merge、resolve conflict 都不用离开编辑器。不装任何扩展就能用,大部分情况下不需要命令行。
基本操作
查看变更
左侧栏的 Source Control 图标(分支形状)显示当前仓库状态。点击后能看到所有已修改文件,点击文件名查看 diff(左右对照显示新增/删除的行)。
暂存和提交
- 点击文件旁的 + 号暂存(相当于 git add)
- 点击 - 号取消暂存(相当于 git reset HEAD)
- 在输入框写 commit message,按 Ctrl+Enter 提交
比命令行快的地方:可以部分暂存——在 diff 视图里选中几行右键 "Stage Selected Ranges",只提交某几行改动而不是整个文件。
撤销修改
文件旁的回退箭头图标撤销所有未暂存的修改(git checkout)。如果已经暂存了,先取消暂存再撤销。
分支管理
左下角状态栏显示当前分支名。点击分支名弹出分支列表:
- 切换到已有分支
- 创建新分支(从当前分支或指定分支创建)
- 删除分支
合并分支:Ctrl+Shift+P 输入 Git: Merge Branch,选择要合并进来的分支。如果有冲突,VSCode 会标记冲突文件。
解决冲突
冲突文件会在编辑器里显示三段内容:
Current Change(当前分支的版本)Incoming Change(要合并进来的版本)- 上方有四个按钮:Accept Current / Accept Incoming / Accept Both / Compare
点击按钮选择保留哪个版本,或者手动编辑合并后的内容。解决所有冲突后保存文件,暂存并提交。
VSCode 的冲突解决界面比 git mergetool 直观很多——两个版本左右对照,选中哪边一目了然。
查看历史
内置功能比较有限:只能看文件的行级别 blame(鼠标悬停在某行显示最后修改的 commit)。要看完整历史,装 GitLens 扩展——显示每一行的修改者、时间、commit 信息,还能看文件的历史版本和 diff。
.gitignore 支持
创建 .gitignore 文件后,VSCode 自动忽略匹配的文件。已跟踪的文件如果加入 .gitignore 不会自动取消跟踪,需要先 git rm --cached。
忽略文件但不想提交 .gitignore:用全局 gitignore(git config --global core.excludesFile ~/.gitignore_global)。
常见问题
Source Control 面板不显示:打开的文件夹不是 Git 仓库。Ctrl+Shift+P 输入 Git: Initialize Repository 初始化,或者 Git: Clone 克隆远程仓库。
文件修改后没有变化标记:可能是文件编码问题或 .gitignore 规则意外匹配。检查 git status 在终端里是否正常。
提交时 husky/pre-commit hook 报错:VSCode 的 Git 集成调用的是系统 git,hook 正常运行。但如果 hook 依赖环境变量(如 PATH 中的 node),VSCode 可能找不到。从终端启动 VSCode(code .)可以继承终端的环境变量。