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为例,远程仓库地址如图所示:

image

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

推送到远程仓库

将本地仓库提交的内容推送到远程仓库,这样,就可能保证本地和远程的一致了,(当前分支为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地址:

项目地址

我的个人博客:

毛浩先生的个人博客

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • Git常用语法 [TOC] Git简介 描述 ​ Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,...
    君惜丶阅读 3,494评论 0 13
  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 15,853评论 5 147
  • Git 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 3,902评论 0 11
  • Git是目前最流行的版本管理系统,也是最先进的分布式版本控制系统(distributed version cont...
    pro648阅读 5,672评论 1 17
  • 2222222222222
    b7b80e663ba0阅读 108评论 0 1