跳转至

Git 使用指南

写在前面

Git是当前最先进最主流分布式开源的版本控制系统。核心能力就是版本控制。具体而言,是面向代码文件的版本控制,代码的任何修改历史都会被记录管理起来,意味着可以恢复到到以前的任意时刻状态。Git支持跨区域多人协作编辑,是团队项目开发的必备基础,所以Git也就成了程序员的必备技能。

主要特点:

  • 开源免费,使用广泛;
  • 强大的文档(代码)的历史版本管理,直接记录完整快照(完整内容,而非差异),支持回滚对比
  • 分布式多人协作的的代码协同开发,几乎所有操作都是本地执行的,支持代码合并代码同步
  • 简单易用的分支管理,支持高效的创建分支、合并分支。

以上特点对于比赛而言具有重要意义

  • 一方面虽然比赛中各兵种有较大区别,但在部分功能代码上具有极强的复用性,如电机通信、PID控制器、裁判系统数据读取等,为此负责编写通用代码的人员可将可用的代码上传到远程仓库上,而使用者可根据需要从远程仓库拉取或同步代码,而在发现代码上存在问题后也可将修复的版本同步到远程仓库,由此避免代码从零构建出现的诸多问题,同时代码使用者也无需完全下载新的代码,而是通过Git将代码的修改部分同步到本地
  • 另一方面,在修改代码的过程中往往会出现问题,导致原先可用的版本在修改后无法正常使用,此时可通过Git比对代码的修改部分或是直接版本回退。而后者可保证在比赛前若当前代码仍存在问题,可快速回退得到可用代码,保证赛场上具有相对稳定的表现。同时Git的代码回退方式可避免通过保存诸多不同版本代码压缩包的方式。

Git安装与详细教程

Git快速使用教程

本教程目的在于使使用者快速掌握在 VSCode 中使用 Git,而非 Git 的详细教程。

0. 所需插件

  1. VSCode 自带的源代码管理。若左侧菜单栏中未显示,可通过右键左侧菜单栏,勾选"源代码管理"调出。

源代码管理调出

  1. VSCode Git History 扩展。在 VSCode 的扩展中搜索 "Git History"后安装即可。

Git History安装

1. 提交代码修改并上传至远程仓库

在使用 Git 进行代码管理前需要进行仓库的初始化,可通过 VSCode 打开项目后,选择"源代码管理",然后点击"初始化仓库"实现。

初始化仓库

在初始化完仓库后可将后续修改的代码添加到仓库之中。为查看及添加修改的便利,可点击源代码管理栏右侧的"以树形式查看"按钮,将代码的修改显示为各个文件下的修改。

以树形式查看

通过点击"更改"栏目中文件夹或文件右侧的"暂存更改"按钮,将修改添加到"暂存的更改"栏目中。

暂存更改

暂存的更改

对于错误添加的更改,可点击"暂存的更改"栏目中文件夹或文件右侧的"取消暂存更改"按钮取消。

取消暂存更改

文件右侧显示字母 "U" 表示未跟踪该文件,"M" 表示文件进行了修改,"A" 表示新增文件,"D" 为删除的文件。

对于某些始终不进行跟踪(即不储存文件修改)的文件可通过在工程目录下新建 .gitignore 文件并在其中添加不进行跟踪的文件与文件夹的名称(文件夹需以 "/" 结尾),此后在源代码管理中便不会再显示相关文件。

添加忽略跟踪文件

在完成确认更改的文件的暂存后,可在"源代码管理"栏目下方的文本框中输入有关本次提交的更改的描述性文本(方便以后查看文件修改记录中快速了解本次修改的大体内容),随后便可点击下方的"提交"按钮提交本次的修改到仓库之中。

提交更改

建议本次提交的修改设计的内容有具体涉及范围且与提交的描述性文本相对应,而不要一次性提交多种不同内容的修改,以避免混淆。

对于新建的仓库,可在完成首次提交后点击"源代码管理"栏目中的"发布 Branch" 按钮将当前仓库发布至远程仓库中。

发布 Branch

随后便会让填写远程仓库的名称(默认为工程文件夹的名称),同时需要选择远程仓库的类型(private:至允许团队中的人查看,public:允许所有人查看,战队的代码全部使用 private)

远程仓库创建

以该种方法创建的远程仓库将位于 GitHub 上个人的对应用户的仓库中,若计划将代码推送到指定远程厂库中则可在新建远程仓库后,点击"源代码管理储存库"栏目中的"远程" → "添加远程存储库"按钮,然后输入远程的 URL 并输入厂库名称后回车即可实现与远程仓库的关联。

添加远程存储库

进一步点击"源代码管理储存库"栏目中的"发布分支"按钮,即可将本地厂库发布至远程厂库中。

发布分支

2. 代码修改历史查看与对比

在提交多次代码修改后可以通过点击"源代码管理存储库"栏目中的 "Git: View History (git log)"按钮即可查看所有的历史提交情况

代码修改历史查看

点击某次提交后,点击某文件右侧的 "Prevois" 按钮即可查看相比上一次提交所做出的改变,在该种情况下左侧为修改前的代码,右侧为修改后的代码。

查看与上一次的代码对比

代码对比情况

如果为查看经过多次提交后代码的对比情况,可首先点击作为对比中修改前的提交右侧的 "More" → "Select this commit ..."按钮,然后点击作为对比中修改后的提交右侧的 "More" → "Compare with ..."按钮。

选择作为修改前的提交

选择作为修改后的提交

此时左侧的资源管理器栏目中将多出 "COMPARE COMMITS" 栏目,其中将显示出此对比中发生改变的所有文件,点击想查看的文件则可观看两次提交的对比情况。

提交对比

3. 修改撤销与代码回滚

当修改后的代码还位于"更改"栏目下时,可通过点击文件右侧的"放弃更改"按钮撤销整个文件的修改。若只打算撤销某文件中的部分修改时,可在点击"更改"栏目下的对应文件,然后在右侧的工作树中点击对应部分的"还原块"按钮,即可实现部分代码的修改撤销。

修改撤销

以上方法只限于将当前的修改撤销至上一次的提交,若打算将代码撤销至某次提交,则可通过点击"源代码管理存储库"栏目中"Git History (git log)"按钮,然后点击在计划回退到的提交右侧的 "Soft" 或 "Hard" 按钮。

其中 "Soft" 的回滚会将代码回滚只对应提交时的状态,但所有的代码修改情况都保留在"暂存的更改"栏目中,这意味着代码还处于未回退的状态下,但此时可通过电机"取消暂存更改",并进一步撤销部分更改甚至全部更改来实现代码全部或是部分代码回滚。

Soft回滚

而 "Hard" 的回滚则会强制将代码恢复至所选的提交,并将所选提交后续进行的提交全部放弃,此时 Git History 在刷新后将不再显示后续的提交。

Hard回滚

但进行上述回滚后,若因某些原因,希望将代码变至回退所在提交后续的某次提交中,此时可通过在终端中输入:

Bash
1
2
3
git reflog

git reset --hard 版本号

此时会显示出所有做出的操作,然后通过命令行进行将代码变至某次版本号。

命令行代码回滚

若终端因中文产生乱码,则可通过一下命令将默认编码修改为 UTF-8:

Bash
Chcp 65001

4. 分支创创建、切换与合并