摘要:本文演示如何在 VS Code 中完成 Git 配置、个人项目与团队项目两套工作流。每节末尾都附有 Microsoft Learn 与微软官方文档的延伸练习链接,可以在里面进行了解更多内容。
注:作者没有很多的开发经验,是站在初学者的视角,来分享一些自己的见解,如有错误希望指出
一、为什么大学新生一定要学版本控制
在写代码的时候,是不是总是会保存一些“作业最终版.cpp”或者“作业真的最终版.cpp”,每次修改检查都会感觉有些地方有问题,或许我改了一个部分,后来又觉得我不想要了,又没办法退回。因此版本控制系统(Version Control System,VCS)就是解决这种问题的工具,Git就是目前最广泛使用,功能强大的VCS,Github作为与git链接甚深的网站,在世界范围内也是广泛接受的。所以,使用git是学生必备的一个技能
这里贴出一个微软官方的教程,里面展示了VCS的介绍,以及git术语等内容可供参考,可以和这个教程一起食用哦~
Microsoft Learn-Git 介绍
(其实下面还会用到)
1.1 版本控制解决了四个痛点:
- 怕改坏:每次提交(commit)都是可回退的快照,如果出现了问题,只需要一个指令就可以回退到最近修改的版本。
- 不知道改了什么:Git 解决了每次修改不知道修改了什么的问题,在每次提交的时候都可以写一个总结,并且附带提交的人,这样每次查看代码历史的时候都知道我的每次修改改了什么,是谁修改了这段代码。
- 多人协作混乱:通过在GitHub与gitee上进行协作,所有你的成员都可以看到彼此的修改与提交,无需专门为文档的修改内容进行沟通,同时也解决了一个问题,git可以看到各版本之间代码的区别,从而减少多人代码的冲突
- 本地代码云端备份:推送到 GitHub、Gitee 后,本地和云端各有一份,即使本地删除,也会有一个云端备份
1.2 一个直观的对比
| 场景 | 传统方式 | 使用Git |
|---|---|---|
| 改出 bug 想回退 | 靠手动备份,可能找不到旧版本 | git checkout或 VS Code 一键还原 |
| 小组三人同时改代码 | 微信传文件,互相覆盖 | 各自分支开发,合并时自动比对 |
| 老师问“这部分谁写的” | 只能通过回忆 | git blame精确到行 |
| 电脑突然坏了 | 代码丢失 | 远程仓库随时可克隆回来 |
二、准备工作:在 VS Code 中配置 Git
2.1 安装git与配置
- 到 git-scm.com 下载安装 Git(或者直接点击这个下载--> 下载git)
- 假定大家都下载了vscode(没下载的话推荐下载哦,很好用的,可以在很多平台上找到使用vscode的教程:P)
- 打开vscode之后我们可以在左侧看到这个图标,就是git界面。
(其实进去之后,如果没下git的话他会给你个按钮就可以去下载.
- 下载好了之后大概就可以看到这么一个界面。
点一下初始化仓库,就可以创建了。 - 然后我们现在终端里初始化我们的名字和邮箱:在终端里输入
git config --global user.name "Your name" git config --global user.email "example@exam.com"
这样就可以设置好名称和email了,这个在提交时有用
认识 VS Code 的源代码管理面板
*实际在看这段之前最好先看看git都有什么区,以及各个区的作用,存在的意义是什么。就以我自 己的经历来看,我之前完全不清楚暂存区的的意义在哪里,只有查过才理解,不过这里的话讲这个就篇幅太长了,而且我也不是那么专业,没法很好的传达这些内容。
在这个面板里有四个主要的内容:
- 更改(Changes):列出被修改但未提交的文件,点击可看行内差异。
- 暂存的更改(Staged Changes):点击文件旁的
+放入暂存区,相当与git add。 - 提交框:输入提交信息后点击“提交”,相当于 git commit。
- 图表:显示了这个仓库的总览。
图形按钮降低了门槛,但建议同时记住对应命令,因为服务器和 CI 流程里往往只有命令行可用,不过在这个文章的目的来看,学习基本的操作就可以应付大部分情况了。
2.2 安装完成后:现在进行一些操作吧!
在我们之前打开的这个文件夹里新建一个文件,什么文件都可以。那我这里就写一个 mycode.txt
这里就可以看到了, 我们的文件显示的是U即未跟踪
然后打开源代码管理,也可以看到更改中有这项
此时就可以把这个文件添加到暂存区,这样我们看到这个文件后显示了 A 即已暂存。当我们有了一些文件之后就可以进行一次提交(commit):
把所有文件添加到暂存区里,然后在上面的对话框中写本次提交的信息。提交的信息很重要,应当把本次所有的更改汇总到这条消息里,以便将来可以快速跟踪。
点击提交之后,图表中就会出现
这样子,就完成了main分支第一个提交。
2.3 版本控制的作用
经过上面的操作我们得到了项目的第一个存档,接下来,我们会经过许许多多的提交:
我在这个工程里添加了一个类,并且增加了几个函数,析构函数,构造函数,并且添加了一个add函数。看到我在图表中的提交历史,我增加了get_x,又删掉了get_x。此时如果我想反悔,不删掉那个函数,因为他可能在某个地方又可以用的到该怎么办?如果没有版本控制系统的话,这个事情是难以完成的,但是当我们有了git,就可以很方便的看到之前的提交并且进行比对和修改。
我们右键点击刚刚的提交:
此时会出现打开更改的选项,点击之后就会出现和这个版本的代码的对比。
这时候我们就可以复制之前的代码进去,从而实现回退代码的效果。
这是一个很简单的办法,来进行各版本的比较编辑。除了这个还有很多的方式,这里就先不讲了。
2.4 使用GitHub等平台进行版本控制与仓库管理
这里推荐看一看微软的课程,Microsoft Learn里提供了很多关于AI开发与工程开发的内容
git入门的链接:Microsoft Learn-Git 介绍
打开网站后,在GitHub上使用git的教程就是这个练习 - 试用Git,额不过打开之后可能会发现:怎么没有跳转的按钮?我也遇到了这种情况,我在这里把链接打出来 introduction-to-github ,进入之后就可以在右上角点击Use this template就可以了。然后在里面填写仓库名和设置public或者private就可以创建了。
此时进入新建的仓库,点击go to exercise即可开始这个练习
*如果关掉了GitHub,不知道怎么回去的话就点右上角的头像,选择Repositories就能看到刚刚创建的仓库了
三、常用命令表
| 目的 | 命令 |
|---|---|
| 初始化仓库 | git init |
| 克隆远程仓库 | git clone 仓库地址 |
| 查看状态 | git status |
| 暂存全部改动 | git add . |
| 提交 | git commit -m "说明" |
| 查看提交历史 | git log --oneline --graph |
| 新建并切换分支 | git checkout -b 分支名 |
| 切换分支 | git checkout 分支名 |
| 拉取远程更新 | git pull |
| 推送 | git push |
| 查看某行代码的修改记录 | git blame 文件名 |
| 撤销工作区未暂存的修改 | git restore 文件名 |