Node+Express搭建个人博客(纯后端)-git操作(五)

前几天,刚刚看到一个女生朋友的动态,说代码没了,还好男朋友帮忙找回来了,可能她还没了解过比男朋友还靠谱的git吧。

git是常用的代码管理工具,使用git之后,我们可以看到详细的代码修改记录,代码review时也能能够很好的甩锅了【手动捂脸】,并且也可以实现代码的备份。接下来,了解下git的基本使用吧。

注: 以下相关命令都是在项目的根目录下执行的。

本地仓库

创建版本库

先进入到项目的根目录,然后执行以下命令,创建项目的版本库。

git init

设置忽略的文件

项目中有些文件是不需要提交到远程仓库的,比如日志文件、临时文件、包含敏感信息的文件等。对于Node程序来说,node_modules/*是所有依赖包所在目录,里面包含文件过多,并且程序部署时会再次安装,所以无需提交。对于package-lock.json,因为我将该文件上传到github之后,或有潜在安全漏洞的提示,所以暂时也忽略了该文件。对于锁版本,有一个知乎的回答另一个知乎的回答,可做参考。

项目中.gitignore文件的配置暂时如下:

# Logs
logs

node_modules/

app/public/apidoc/

package-lock.json

将文件加入版本库

因为已经设置了项目要忽略的文件,所以我通常都是将项目中所有的文件加入到版本库,当然,也可以按需添加。将所有文件加入到版本库的命令如下:

git add .

将文件提交到版本库

上一步将需要的文件已经加入到版本库了,现在需要将上一步的文件提交到版本库,执行以下命令:

git commit -m '你的提交说明信息'

当然,commit规范还是要遵循的,不清楚的,可以看我的这篇文章

远程仓库

添加远程仓库

以上步骤,只是在本地代码仓库的操作流程,我们在工作过程中肯定是会使用到远程仓库的,远程仓库既可以作为本地仓库的备份,又可以进行团队协作的开发工作,所以,添加远程仓库是好的选择,执行以下命令即可:

git remote add origin 你的远程仓库地址

github为例,远程仓库地址如图所示:

注:千万是你的远程仓库地址;千万是你的远程仓库地址;千万是你的远程仓库地址;

推送到远程仓库

将本地仓库提交的内容推送到远程仓库,这样,就可能保证本地和远程的一致了,(当前分支为master分支)执行以下命令:

git push origin master

分支管理

开发和工作中,我们需要一个分支保持稳定的功能一般这个分支为master,当然,也可能存在不同版本的稳定分支,视情况而定。项目新的特性和bug修复,不会在稳定分支上进行修改和提交,所以我们需要建立新的开发分支,根据类型,我一般根据修改的类型建立不同类型的分支,比如新增需求的分支为feature/xxxxbug修复的分支为bug/xxx,但是项目只有我自己开发,所以就没有那么严格的区分了,就只是有一个开发分支morehao_dev

建立分支

创建新的开发分支并切换到新的分支(当前代码分支为稳定版本的master分支),命令如下:

git branch morehao_dev
git checkout morehao_dev

或者:

git checkout -b morehao_dev

推送分支

将新建的开发分支推送到远程仓库,命令如下:

git push origin morehao_dev:morehao_dev

在开发分支上开发完相应的需求或者修改完bug之后,需要提交并推送这些代码,和在主分支上的操作一致,流程如下:

git add .
git commit -m '提交说明信息'
git push origin morehao_dev

分支合并

开发分支的代码提交之后,如果相应修改经测试无误,就需要将这些修改同步到稳定分支,本项目的稳定分支为master分支,这时就涉及到分支合并了,分支合并的命令为git merge,我们当前的代码分支为morehao_dev,操作流程如下:

git checkout master
git pull origin master
git merge morehao_dev
git push origin master

pre-commit配置

现在,项目涉及到代码提交了,前面提到过的代码规范就会在现在大发神威了。

首先,安装相应库包,命令如下:

npm install --save-dev pre-commit
npm install -g standard

然后,在package.json中相应位置添加如下配置:

"scripts": {
"standard": "standard"
},
"pre-commit": [
"standard"
],

配置完成之后,进行git commit操作时,如果代码不符合规范,是不允许进行git commit操作的。

更新日志配置

每一次的commit就是一次代码的更新,很好的记录这些更新,能够知道每次提交做了什么样的修改或者新增了哪些特性,熟知各个版本的变化。

首先安装相应的包,命令如下:

npm install -g conventional-changelog

然后,在package.json中相应位置添加如下配置:

"scripts": {
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0"
}

最后,生成更新日志,执行以下命令:

npm run changelog

执行完生成更新日志的命令之后,在项目的根目录下回生成一个名为CHANGELOG.md文件,记录了更新的日志。

git常用命令

上面是比较基础的git操作和一些相关配置,以下是我学习和工作中常用的git命令,不是所有的命令,但是完场日常工作,应该是足够了。

创建秘钥

进入.ssh目录,如果没有改目录,创建该目录

cd .ssh

mkdir .ssh

配置公钥

ssh-keygen -t rsa -C ''your email''

复制公钥

cat id_rsa.pub

将公钥粘贴到代码托管工具的相应位置

初始化本地仓库

创建一个express项目

express projectName

初始化本地仓库

cd projectName
git init

删除本地仓库

rm -rf .git

配置远程仓库

添加远程仓库

git remote add origin url

删除远程仓库

git remote remove origin

抓取远端仓库最新项目

git pull origin master

修改后push到远端仓库

git add .
<!--推荐按照commit日志基本规范编写commit信息-->
git commit
git push origin master

本地分支与远程分支

列出所有本地分支

git branch

列出所有远程分支

git branch -r

列出所有本地分支和远程分支

git branch -a

建立本地分支

git branch dev

建立并切换分支

git checkout -b dev

推送本地分支到远程分支

git push origin dev:dev

删除本地分支

git branch -d dev

删除远程分支

git push origin --delete dev

查看本地分支与远程分支的映射关系

git branch -vv

建立本地分支与远程分支的映射关系

git branch --set-upstream-to origin/dev

撤销本地分支与远程分支的映射关系

git branch --unset-upstream

下载远程分支

git clone url

指定下载远程分支

git clone -b branchName url

暂存修改

查看修改状态

git status

保存当前修改进度

git stash

查看保存的修改进度的列表

git stash list

恢复保存的修改进度并删除保存的修改进度(默认最新)

git stash pop

恢复保存的修改进度但不删除保存的修改进度(默认最新)

git stash apply

恢复指定的保存并删除该保存

git stash pop stash@{2}

暂存删除

git stash drop

版本回退

查看最近到最远的提交日志

git log

查看最近到最远的提交日志的简要信息

git log --pretty=oneline
<!--在git log显示的日志信息中,HEAD表示当前版本,也就是最新的版本,上个版本是HEAD^,上上个版本是HEAD^^,依次类推可以知道往上的100个版本为HEAD~100。-->

版本回退

git reset --hard HEAD^ 

<!--ID,不必写全,git会自动寻找相应的版本号-->
git reset --hard aqweq #最后参数为commitId

git操作日志

git reflog

打标签

创建tag(标签)

git tag <tagName>

指定标签名(-a)和标签说明(-m)

git tag -a v1.4 -m 'my version 1.4'

查看所有标签

git tag

将tag推送到远程仓库

git push origin <tagName>

将所有新增的本地标签推送到远程仓库

git push origin --tags

删除本地标签

git tag -d <tagName>

删除远程仓库的标签

git push origin :refs/tags/<tagName>

小结

本文以本项目为例,完成了基本的git操作流程,并且罗列出了我常用的git命令,我对git的了解也不够深入,也正在了解git工作流程,这个词应该会经常出现在招聘信息中,如果有兴趣,可以了解下,帮助绝对不止一点点。

下面附上项目的github地址:

项目地址

我的简书:

毛浩先生的简书博客