Node+Express搭建個(gè)人博客(純后端)-git操作(五)

前幾天座云,剛剛看到一個(gè)女生朋友的動(dòng)態(tài),說代碼沒了付材,還好男朋友幫忙找回來了朦拖,可能她還沒了解過比男朋友還靠譜的git吧。

git是常用的代碼管理工具厌衔,使用git之后璧帝,我們可以看到詳細(xì)的代碼修改記錄,代碼review時(shí)也能能夠很好的甩鍋了【手動(dòng)捂臉】富寿,并且也可以實(shí)現(xiàn)代碼的備份睬隶。接下來,了解下git的基本使用吧页徐。

注: 以下相關(guān)命令都是在項(xiàng)目的根目錄下執(zhí)行的苏潜。

本地倉庫

創(chuàng)建版本庫

先進(jìn)入到項(xiàng)目的根目錄,然后執(zhí)行以下命令变勇,創(chuàng)建項(xiàng)目的版本庫恤左。

git init

設(shè)置忽略的文件

項(xiàng)目中有些文件是不需要提交到遠(yuǎn)程倉庫的,比如日志文件搀绣、臨時(shí)文件飞袋、包含敏感信息的文件等。對于Node程序來說链患,node_modules/*是所有依賴包所在目錄巧鸭,里面包含文件過多,并且程序部署時(shí)會(huì)再次安裝麻捻,所以無需提交纲仍。對于package-lock.json览闰,因?yàn)槲覍⒃撐募蟼鞯?code>github之后,或有潛在安全漏洞的提示巷折,所以暫時(shí)也忽略了該文件压鉴。對于鎖版本,有一個(gè)知乎的回答另一個(gè)知乎的回答锻拘,可做參考油吭。

項(xiàng)目中.gitignore文件的配置暫時(shí)如下:

# Logs
logs

node_modules/

app/public/apidoc/

package-lock.json

將文件加入版本庫

因?yàn)橐呀?jīng)設(shè)置了項(xiàng)目要忽略的文件,所以我通常都是將項(xiàng)目中所有的文件加入到版本庫署拟,當(dāng)然婉宰,也可以按需添加。將所有文件加入到版本庫的命令如下:

git add .

將文件提交到版本庫

上一步將需要的文件已經(jīng)加入到版本庫了推穷,現(xiàn)在需要將上一步的文件提交到版本庫心包,執(zhí)行以下命令:

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

當(dāng)然,commit規(guī)范還是要遵循的馒铃,不清楚的蟹腾,可以看我的這篇文章

遠(yuǎn)程倉庫

添加遠(yuǎn)程倉庫

以上步驟区宇,只是在本地代碼倉庫的操作流程娃殖,我們在工作過程中肯定是會(huì)使用到遠(yuǎn)程倉庫的,遠(yuǎn)程倉庫既可以作為本地倉庫的備份议谷,又可以進(jìn)行團(tuán)隊(duì)協(xié)作的開發(fā)工作炉爆,所以,添加遠(yuǎn)程倉庫是好的選擇卧晓,執(zhí)行以下命令即可:

git remote add origin 你的遠(yuǎn)程倉庫地址

github為例芬首,遠(yuǎn)程倉庫地址如圖所示:

image

注:千萬是你的遠(yuǎn)程倉庫地址;千萬是你的遠(yuǎn)程倉庫地址逼裆;千萬是你的遠(yuǎn)程倉庫地址郁稍;

推送到遠(yuǎn)程倉庫

將本地倉庫提交的內(nèi)容推送到遠(yuǎn)程倉庫,這樣波附,就可能保證本地和遠(yuǎn)程的一致了艺晴,(當(dāng)前分支為master分支)執(zhí)行以下命令:

git push origin master

分支管理

開發(fā)和工作中,我們需要一個(gè)分支保持穩(wěn)定的功能一般這個(gè)分支為master掸屡,當(dāng)然封寞,也可能存在不同版本的穩(wěn)定分支,視情況而定仅财。項(xiàng)目新的特性和bug修復(fù)狈究,不會(huì)在穩(wěn)定分支上進(jìn)行修改和提交,所以我們需要建立新的開發(fā)分支盏求,根據(jù)類型抖锥,我一般根據(jù)修改的類型建立不同類型的分支亿眠,比如新增需求的分支為feature/xxxxbug修復(fù)的分支為bug/xxx磅废,但是項(xiàng)目只有我自己開發(fā)纳像,所以就沒有那么嚴(yán)格的區(qū)分了,就只是有一個(gè)開發(fā)分支morehao_dev拯勉。

建立分支

創(chuàng)建新的開發(fā)分支并切換到新的分支(當(dāng)前代碼分支為穩(wěn)定版本的master分支)竟趾,命令如下:

git branch morehao_dev
git checkout morehao_dev

或者:

git checkout -b morehao_dev

推送分支

將新建的開發(fā)分支推送到遠(yuǎn)程倉庫,命令如下:

git push origin morehao_dev:morehao_dev

在開發(fā)分支上開發(fā)完相應(yīng)的需求或者修改完bug之后宫峦,需要提交并推送這些代碼岔帽,和在主分支上的操作一致,流程如下:

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

分支合并

開發(fā)分支的代碼提交之后,如果相應(yīng)修改經(jīng)測試無誤导绷,就需要將這些修改同步到穩(wěn)定分支犀勒,本項(xiàng)目的穩(wěn)定分支為master分支,這時(shí)就涉及到分支合并了,分支合并的命令為git merge妥曲,我們當(dāng)前的代碼分支為morehao_dev贾费,操作流程如下:

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

pre-commit配置

現(xiàn)在,項(xiàng)目涉及到代碼提交了逾一,前面提到過的代碼規(guī)范就會(huì)在現(xiàn)在大發(fā)神威了铸本。

首先肮雨,安裝相應(yīng)庫包遵堵,命令如下:

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

然后,在package.json中相應(yīng)位置添加如下配置:

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

配置完成之后怨规,進(jìn)行git commit操作時(shí)陌宿,如果代碼不符合規(guī)范,是不允許進(jìn)行git commit操作的波丰。

更新日志配置

每一次的commit就是一次代碼的更新壳坪,很好的記錄這些更新,能夠知道每次提交做了什么樣的修改或者新增了哪些特性掰烟,熟知各個(gè)版本的變化爽蝴。

首先安裝相應(yīng)的包,命令如下:

npm install -g conventional-changelog

然后纫骑,在package.json中相應(yīng)位置添加如下配置:

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

最后蝎亚,生成更新日志,執(zhí)行以下命令:

npm run changelog

執(zhí)行完生成更新日志的命令之后先馆,在項(xiàng)目的根目錄下回生成一個(gè)名為CHANGELOG.md文件发框,記錄了更新的日志。

git常用命令

上面是比較基礎(chǔ)的git操作和一些相關(guān)配置煤墙,以下是我學(xué)習(xí)和工作中常用的git命令梅惯,不是所有的命令宪拥,但是完場日常工作,應(yīng)該是足夠了铣减。

創(chuàng)建秘鑰

進(jìn)入.ssh目錄她君,如果沒有改目錄,創(chuàng)建該目錄

cd .ssh
或 
mkdir .ssh

配置公鑰

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

復(fù)制公鑰

cat id_rsa.pub

將公鑰粘貼到代碼托管工具的相應(yīng)位置

初始化本地倉庫

創(chuàng)建一個(gè)express項(xiàng)目

express projectName

初始化本地倉庫

cd projectName
git init

刪除本地倉庫

rm -rf .git

配置遠(yuǎn)程倉庫

添加遠(yuǎn)程倉庫

git remote add origin url

刪除遠(yuǎn)程倉庫

git remote remove origin

抓取遠(yuǎn)端倉庫最新項(xiàng)目

git pull origin master

修改后push到遠(yuǎn)端倉庫

git add .
<!--推薦按照commit日志基本規(guī)范編寫commit信息-->
git commit 
git push origin master

本地分支與遠(yuǎn)程分支

列出所有本地分支

git branch

列出所有遠(yuǎn)程分支

git branch -r

列出所有本地分支和遠(yuǎn)程分支

git branch -a

建立本地分支

git branch dev

建立并切換分支

git checkout -b dev

推送本地分支到遠(yuǎn)程分支

git push origin dev:dev

刪除本地分支

git branch -d dev

刪除遠(yuǎn)程分支

git push origin --delete dev

查看本地分支與遠(yuǎn)程分支的映射關(guān)系

git branch -vv

建立本地分支與遠(yuǎn)程分支的映射關(guān)系

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

撤銷本地分支與遠(yuǎn)程分支的映射關(guān)系

git branch --unset-upstream

下載遠(yuǎn)程分支

git clone url

指定下載遠(yuǎn)程分支

git clone -b branchName url

暫存修改

查看修改狀態(tài)

git status

保存當(dāng)前修改進(jìn)度

git stash

查看保存的修改進(jìn)度的列表

git stash list

恢復(fù)保存的修改進(jìn)度并刪除保存的修改進(jìn)度(默認(rèn)最新)

git stash pop

恢復(fù)保存的修改進(jìn)度但不刪除保存的修改進(jìn)度(默認(rèn)最新)

git stash apply

恢復(fù)指定的保存并刪除該保存

git stash pop stash@{2}

暫存刪除

git stash drop

版本回退

查看最近到最遠(yuǎn)的提交日志

git log

查看最近到最遠(yuǎn)的提交日志的簡要信息

git log --pretty=oneline
<!--在git log顯示的日志信息中葫哗,HEAD表示當(dāng)前版本犁河,也就是最新的版本,上個(gè)版本是HEAD^魄梯,上上個(gè)版本是HEAD^^桨螺,依次類推可以知道往上的100個(gè)版本為HEAD~100。-->

版本回退

git reset --hard HEAD^ 
或 
<!--ID酿秸,不必寫全灭翔,git會(huì)自動(dòng)尋找相應(yīng)的版本號(hào)-->
git reset --hard aqweq  #最后參數(shù)為commitId

git操作日志

git reflog

打標(biāo)簽

創(chuàng)建tag(標(biāo)簽)

git tag <tagName>

指定標(biāo)簽名(-a)和標(biāo)簽說明(-m)

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

查看所有標(biāo)簽

git tag

將tag推送到遠(yuǎn)程倉庫

git push origin <tagName>

將所有新增的本地標(biāo)簽推送到遠(yuǎn)程倉庫

git push origin --tags

刪除本地標(biāo)簽

git tag -d <tagName>

刪除遠(yuǎn)程倉庫的標(biāo)簽

git push origin :refs/tags/<tagName>

小結(jié)

本文以本項(xiàng)目為例,完成了基本的git操作流程辣苏,并且羅列出了我常用的git命令肝箱,我對git的了解也不夠深入,也正在了解git工作流程稀蟋,這個(gè)詞應(yīng)該會(huì)經(jīng)常出現(xiàn)在招聘信息中煌张,如果有興趣,可以了解下退客,幫助絕對不止一點(diǎn)點(diǎn)骏融。

下面附上項(xiàng)目的github地址:

項(xiàng)目地址

我的個(gè)人博客:

毛浩先生的個(gè)人博客

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市萌狂,隨后出現(xiàn)的幾起案子档玻,更是在濱河造成了極大的恐慌,老刑警劉巖茫藏,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件误趴,死亡現(xiàn)場離奇詭異,居然都是意外死亡务傲,警方通過查閱死者的電腦和手機(jī)凉当,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來售葡,“玉大人看杭,你說我怎么就攤上這事√焱ǎ” “怎么了泊窘?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我烘豹,道長瓜贾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任携悯,我火速辦了婚禮祭芦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘憔鬼。我一直安慰自己龟劲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布轴或。 她就那樣靜靜地躺著昌跌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪照雁。 梳的紋絲不亂的頭發(fā)上蚕愤,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音饺蚊,去河邊找鬼萍诱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛污呼,可吹牛的內(nèi)容都是我干的裕坊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼燕酷,長吁一口氣:“原來是場噩夢啊……” “哼籍凝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起悟狱,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤静浴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后挤渐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡双絮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年浴麻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片囤攀。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡软免,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出焚挠,到底是詐尸還是另有隱情膏萧,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站榛泛,受9級(jí)特大地震影響蝌蹂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜曹锨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一孤个、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沛简,春花似錦齐鲤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至捧灰,卻和暖如春丑罪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凤壁。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工吩屹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拧抖。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓煤搜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親唧席。 傳聞我的和親對象是個(gè)殘疾皇子擦盾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Git常用語法 [TOC] Git簡介 描述 ? Git(讀音為/g?t/。)是一個(gè)開源的分布式版本控制系統(tǒng)淌哟,...
    君惜丶閱讀 3,529評(píng)論 0 13
  • Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照迹卢,而是把代碼倉庫完整的鏡像下來。這樣一來徒仓,任何一處協(xié)同...
    __silhouette閱讀 15,887評(píng)論 5 147
  • Git 命令行學(xué)習(xí)筆記 Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照腐碱,而是把代碼倉庫完整的鏡像下來...
    sunnyghx閱讀 3,921評(píng)論 0 11
  • Git是目前最流行的版本管理系統(tǒng),也是最先進(jìn)的分布式版本控制系統(tǒng)(distributed version cont...
    pro648閱讀 5,707評(píng)論 1 17
  • 2222222222222
    b7b80e663ba0閱讀 109評(píng)論 0 1