时效性
本篇撰写时间为2021.12.16,由于计算机技术日新月异,博客中所有内容都有时效和版本限制,具体做法不一定总行得通,链接可能改动失效,各种软件的用法可能有修改。但是其中透露的思想往往是值得学习的。
Windows 10家庭中文版,版本20H2,操作系统内部版本19042.1348
本篇前置:
- ExpRe[0] VSCode[0] 安装和基础使用,联动Markdown,联动知乎
https://www.cnblogs.com/minor-second/p/15528264.html - 有一个github账号,并有一个自己的库,用于尝试操作。使用过
Git Bash等做版本管理
插件:Git Project Manager
在vscode中Ctrl+Shift+X寻找插件,

版本如上图
配置设置
https://marketplace.visualstudio.com/items?itemName=felipecaputo.git-project-manager
Before start using GPM you need to configure the base folders that the extension will search for git repositories. Edit settings.json from the File -> Preferences -> Settings and add the following config
即:选择File -> Preferences -> Settings,
这里看到Edit in settings.json按钮
具体配置方法参见官方文档。一个示例:
{
"gitProjectManager.baseProjectsFolders":
[
"/home/user/nodeProjects",
"/home/user/personal/pocs"
]
}
注:如果在Windows系统使用,需要把/改为\\
例如
更多配置参见官网文档
例如
"gitProjectManager.storeRepositoriesBetweenSessions": true,
"gitProjectManager.checkRemoteOrigin": false
可以提升性能
使用
Ctrl + Shift + P,GPM: Open Git Project找已经clone的git库可以打开
其它常用命令:
GPM: Refresh Projects(可以更新Open Git Project命令所能看到的列表)
GPM: Refresh specific project folder
Ctrl+Shift+Q(打开近期的),即GPM: Open Recent Git Project
vscode内置git commit功能

左侧如图按钮,在图示框中添加commit信息(也就是命令行commit时,-m),Ctrl + Enter提交
- 注:如果出现这个
![image]()
那么应该Ctrl + `打开终端,并且
git config --global user.name "FIRST_NAME LAST_NAME"
git config --global user.email "MY_NAME@example.com"
提交之后,登录github.com查看相应的库,发现确实已经commit上去了

而且在这里


可以看到历史
- 注:左侧界面commit前可以去逐个检查一下改变了的文件,
![image]()
此处可以Revert(还原,撤销)你的更改
插件:Git History
插件名Git History

版本如上
常见命令
View Git History (git log) (git.viewHistory)
可以看到库的历史信息,![image]()
并看到右侧有Tag(加标签作为版本号),Branch(分支)等常见操作
注意新建分支后需要左下角选择后才生效
![image]()
“More”里面还有Checkout等更多操作
Checkout is the command used to switch between the different branches of a GitHub repository. When a branch is checked out, all files in the working directory are updated to match the versions stored in that branch.
View File History (git.viewFileHistory)
NOTE: The file for which the history is to be viewed, must already be opened.
打开一个文件,在开着该文件的编辑窗口的同时,Ctrl + Shift + P,选择该命令,看到该文件的历史

View Line History (git.viewLineHistory)
![image]()
![image]()
可以看到不同的行在View Line History时能看到的commit个数不同(只有某个commit确实修改了某行才会出现在这里)
可以做一个实验,在第一行插入几行内容,后面不动,它可以智能识别,不会认为这个文件所有行都变了。
![image]()
COMMITS和COMPARE COMMITS选项卡
左侧EXPLORER(左上方下图的按钮)

在下方有COMMITS和COMPARE COMMITS区域

- 在右侧
Git History选项卡,选择某个commit,可以看到左边COMMIT里列举了具体变动 - 在“More”处“Select”一个commit,和“Compare”另一个commit之后(参见下图),可以在左边COMMIT里看到两个版本的不同
![image]()
注意此处用到的十六进制的hash在这里有显示
![image]()
目前的局限
- 背景知识:
git中untracked files:参见https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%AE%B0%E5%BD%95%E6%AF%8F%E6%AC%A1%E6%9B%B4%E6%96%B0%E5%88%B0%E4%BB%93%E5%BA%93
![image]()
git checkout <Tag或hash>可用于切换版本。但需要目前本地不能有untracked working tree files
例如<根目录>/.vscode/launch.json在刚clone下来时不存在(初始版本v0)- 你加上了这个
.json文件用于配置调试,且把它add和commit了,得到新版本v1 - 然后你又checkout到最初的版本
v0 - 又加上了这个文件用于配置调试
- 然后想checkout到
v1
- 这样的操作就是(默认配置下)不允许的。原因是防止你误操作覆盖。
- 现在我们在有这样的untracked working tree files的时候尝试命令行
git checkout <hash>
![image]()
报错,不允许执行 - 在同样的状态尝试点击vscode界面左下角
![image]()
也报错
![image]()
- 但尝试用插件checkout,则没有任何反应,也不报错,这就反人类了












