type
status
date
slug
summary
tags
category
icon
password

0. 前言

熟悉 Git 的常用命令,以下将以 Visual Studio Code 作为编辑器、Gitee 作为远程仓库介绍相关使用。
Git 的意义在于控制多版本的代码以及更好的团队协作。
 
Reading && More References:
  1. Git 官方教程:https://git-scm.com/book/zh/v2
  1. 如何在 Visual Studio Code 中使用 Git:https://code.visualstudio.com/Docs/editor/versioncontrol
  1. 如何在 WebStorm 中使用 Git:https://www.jetbrains.com/help/idea/using-git-integration.html
 

1. 代码克隆(至本地仓库) git clone <git address>

复制代码仓库地址(https://gitee.com/hp-chenpc/frontend_practice.git),找到你存放本地代码仓库的文件夹,右击点选 Git Bash Here。
notion image
进入 Bash 终端界面,使用以下命令克隆线上代码至本地仓库
notion image
 
注意:如果无法执行克隆,请保证在初次使用 git 前,设置相关配置,具体可参阅:
 

2. 查看(本地仓库的)现有分支 git branch

将源码文件夹拖进 vs code,打开终端(Ctrl + ~),可以看到本地仓库默认位于 master 分支:
notion image
 
也可以通过命令 git branch 查看本地现有分支,目前仅有 master 一个分支。
通过颜色可知,当前处于 master 分支。
notion image
 

3. 新建分支 git branch <branch name>

一般来讲,正常开发中绝不允许直接在 master 上直接修改代码,我们需要根据具体任务在本地新建分支。例如,我现在要添加 Vue 脚手架初始化项目,那么新的分支的名字可以根据【任务类型-任务内容-任务执行人】的形式起为:update-init_project-cpc。
注意,新建的分支需要基于现有分支进行创建,可以理解为造房子需要有一个地基,也可以理解为 JavaScript 中创建一个新的对象实例的前提是要有一个构造函数,是的,它需要有一个地基。
初始化项目的新分支暂时基于 master 分支进行创建,键入以下命令:
 
之后,通过 git branch 命令可以看到,本地代码仓库中确实有这个分支。
notion image
 

4. 切换分支 git checkout <branch name>

虽然我们创建了新的本地分支,但目前所在的分支并非是它。
需要使用以下命令切换分支:
 
之后,通过 git branch 命令可以看到,当前分支已切换成功。
notion image
 
注意:新建分支并切换到新的分支的命令可以合并为 git checkout -b <branch name>
 

5. 查看(文件的)状态报告 git status

当分支上的文件发生改变时(这里我初始化了 Vue 脚手架,具体细节略。),vs code 内置的 git 功能会监测这些文件变化。
输入以下命令查看状态报告:
notion image
注意:
  • 在提交(commit)代码之前,我们需要将发生变化的文件(staged changes)存入一个位置——暂存区
  • 暂存区的意义在于,它会追踪变化。
    • 当你提交代码时,存在暂存区的文件(就是被追踪的文件)将会被提交上去;
    • 而不在暂存区的(肯定是有变化的)文件,没有被追踪,因此不会被提交上去。
    • 所以,当你将当前分支的代码与上游分支合并,却发现上游分支的代码某些功能缺失时,你就要想到是不是有文件没有被提交到暂存区。
 

6. 追踪新文件(放入暂存区) git add <file name>

一般来说,一个大的功能点将会被拆分为些许小的功能点,每开发完一个小的功能点后,都会提交一次代码,在提交之前,需要将改动的文件添加至暂存区,然后再提交。
git add 后面我只写了一个点,表示将当前文件夹下所有的改动文件(不管是未被追踪的,还是被追踪的。)全部添加至暂存区。
notion image
 
接着再看一次文件状态,git status。
notion image
所有改动的文件已被放进暂存区。
 
注意:如果想要指定文件,例如,我只想将 README.md 文件添加进暂存区,那么输入以下命令即可:
notion image
 

7. 提交更新记录 git commit -m 'some commit logs'

提交暂存区内所有文件,更新本地仓库,从而确保从本地仓库向远程仓库推送的代码是最新的。
notion image
每次提交都会生成一个提交记录的 id 值,这个是有意义的,感兴趣的可以去查找资料。
 

8. 推送分支(至远程仓库) git push origin <branch name> / git push

现在可以将这批代码推送至远程仓库了。
notion image
注意:到这里,可能会有疑惑,一般不是 git push 就好了么?
原因在于:update-init_project-cpc 这个分支并没有在远程仓库,因此需要将推送命令写完整才行。
之后,远程仓库也有这个分支以后,便可直接 git push。
 

9. 拉取(远程仓库的)分支 git pull

以上,我们完成了代码克隆、新建分支、切换分支、文件追踪(暂存)、提交更新记录、分支推送,现在可以说是完成了 60% 的任务了,剩下 40% 要做的事是更新远程仓库的主分支 master
分为四步:
第一步,从 update-init_project-cpc 分支切换至 master 分支(注意都是本地仓库);
notion image
 
第二步,master 分支拉取远程仓库,确保本地的 master 分支与远程仓库中的 master 文件状态保持一致
notion image
注意:这里看似多了一步,实际上在真实开发过程中,远程仓库的 master 分支可能与我们最开始的不一样了,有更新,因此这一步是有必要的!
 

10. 合并分支 git merge <branch name>

第三步,将 update-init_project-cpc 分支上的代码合并进 master 分支。
注意,此时我们位于 master 分支,要合并谁,branch name(分支名) 就写谁,这里是 update-init_project-cpc。
 

11. 查看未暂存的修改 git diff

notion image
一般情况下,可以正常合并。
但这里出现了一个错误,提示我们有一个文件(.gitignore)没有被提交。
原因是 vs code 发现 master 分支上的 .gitignore 文件可以做一些更好的修改,于是我遵循它的建议作了修改,但此时并未提交这些修改
还记得吗?可以通过 git status 来查看本地仓库的文件状态:
notion image
 
如果 git status 命令的输出对于你来说过于简略,而你想知道具体修改了什么地方,可以用 git diff 命令。—— https://git-scm.com/book/zh/v2/Git-基础-记录每次更新到仓库
git diff 命令可以看到文件修改的具体细节,而不仅仅是文件的名字。
notion image
 
接下来,文件添加追踪,放进暂存区,并提交更新。
notion image
注意:上面的命令是连写方式,也可以像下面这样分开写:
 
当然,还需要推送到远程仓库才行。
notion image
 
最后,重新进行代码合并。
notion image
又出错了!自动合并时,提示 .gitignore 文件存在冲突。
 

12. 解决分支冲突

notion image
如上图所示,在 vs code 中,如果出现分支冲突,那么在这个发生冲突的文件中,绿色代表当前分支(此时是 master 分支)的内容,蓝色表示外来分支(此时是 update-init_project-cpc 分支)的内容。
根据实际情况,这里应该选择外来分支的内容,点击绿色范围上方的第二个选项:Accept Incoming Change
notion image
这样,就解决了分支冲突。
注意:实际工作中,遇到的冲突可能远比这个复杂,有必要的情况下,请和团队成员确认合并结果,以免合并出错,造成代码丢失等问题。
 
接下来,重新添加文件放进暂存区、提交并推送。
notion image
好像推送成功了,但是又没有成功。
因为我把 && git push 命令写进了提交记录的字符串中,本来要写的是:
现在,已经提交了记录了,该怎么办?
重新修正提交信息即可。
 

13. 查看分支提交历史 git log

在修正提交信息之前,我们需要看一下提交历史,确认上一次的提交信息是否写错。
那么如何查看提交历史呢?
notion image
我们可以看到最近一条提交记录的提交信息被误写成:fix conflicts in .gitignore && git push。
 

14. 修正上一次的提交 git commit —amend

有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令来重新提交。——https://git-scm.com/book/zh/v2/Git-基础-撤消操作
输入后,出现以下界面,第一行就是刚刚的提交信息:
notion image
 
此时,按下 i 键进入 insert 模式
notion image
 
移动光标,修改第一行的提交信息:
notion image
 
完成后,按下 Esc 键,退出 insert 模式,底部的”插入“字样消失。
notion image
 
此时,直接键入 Linux 命令 —— :wq ,保存编辑并退出。出现以下界面说明修改成功:
notion image
 
这时再次使用 git log 查看提交历史。
notion image
没有问题。
 
终于,正式来到最终章——将合并好的 master 分支推送至远程仓库(git push),并使用 git status 再次查看文件状态:本地仓库的分支已更新到远程仓库,也确实没有东西提交了,本地和远程仓库的内容保持一致。
notion image
至此,完成了初始化 Vue 脚手架的任务(相关分支:update-init_project-cpc)。
 

15. Summary

如果你边读边做,我相信你应该会掌握以下技能:
  1. 将一个远程仓库克隆到本地
  1. 在本地新建分支
  1. 切换(检出)分支
  1. 追踪文件,放进暂存区
  1. 提交更新
  1. 推送分支
除此之外,还包括分支合并、分支冲突的解决、提交信息的修改等内容。
结束了么?并没有~ 未完待续……
以上,如有谬误,还请斧正,希望这篇文章对你有所帮助,感谢您的阅读~
 
浅尝浏览器桌面通知 NotificationWebpack5 系列(九):TS 打包配置
Eric 见嘉
Eric 见嘉
Less is more.
公告
type
status
date
slug
summary
tags
category
icon
password
💭
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。

关于我
土木转行的前端开发工程师,陆续分享技术干货。
联系我
微信公众号:见嘉 Being Dev