时效性
本篇撰写时间为2021.12.16,由于计算机技术日新月异,博客中所有内容都有时效和版本限制,具体做法不一定总行得通,链接可能改动失效,各种软件的用法可能有修改。但是其中透露的思想往往是值得学习的。
Windows 10家庭中文版,版本20H2,操作系统内部版本19042.1348
本篇前置:

插件:Git Project Manager

在vscode中Ctrl+Shift+X寻找插件,
image
版本如上图

配置设置

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,image
这里看到Edit in settings.json按钮
具体配置方法参见官方文档。一个示例:

{
"gitProjectManager.baseProjectsFolders":
    [
        "/home/user/nodeProjects",
        "/home/user/personal/pocs"
    ]
}

注:如果在Windows系统使用,需要把/改为\\
例如image
更多配置参见官网文档
例如

    "gitProjectManager.storeRepositoriesBetweenSessions": true,
    "gitProjectManager.checkRemoteOrigin": false

可以提升性能

使用

Ctrl + Shift + PGPM: 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功能

image
左侧如图按钮,在图示框中添加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上去了
image
而且在这里
image
image
可以看到历史

  • 注:左侧界面commit前可以去逐个检查一下改变了的文件,
    image
    此处可以Revert(还原,撤销)你的更改

插件:Git History

插件名Git History
image
版本如上
常见命令

  • 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,选择该命令,看到该文件的历史
image

  • View Line History (git.viewLineHistory)
    image
    image
    可以看到不同的行在View Line History时能看到的commit个数不同(只有某个commit确实修改了某行才会出现在这里)
    可以做一个实验,在第一行插入几行内容,后面不动,它可以智能识别,不会认为这个文件所有行都变了。
    image

COMMITS和COMPARE COMMITS选项卡

左侧EXPLORER(左上方下图的按钮)
image
在下方有COMMITS和COMPARE COMMITS区域
image

  • 在右侧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,则没有任何反应,也不报错,这就反人类了