優(yōu)雅的使用git

前言

之前寫過一篇文章,對git的語法有了詳細的說明,有興趣的可以看看Git的使用規(guī)范。經(jīng)過這些年的摸爬滾打,總結(jié)了一些經(jīng)驗,讓我們一起優(yōu)雅的使用Git吧?。?!

工具篇

如果你快速上手,有圖形化界面的,下面兩個軟件都不錯

但是,無論你是新手還是老手,對于git操作,我還是強烈推薦終端命令行(Mac下推薦Iterm2+Oh My Zsh的組合)。

這時候應該有很多人就要開始質(zhì)疑了,有便捷的軟件不用干嗎還要去命令行,我是傻么,再說git命令我又記不住 etc...

為什么會質(zhì)疑呢?無非還是你不熟么,不知道git到底為何物,恐懼…git常用的命令也就10來個,等過了磨合期后你會愛上它的。

個人有幾點推薦理由:

  • 清晰的知道每一步都做了什么,心里有數(shù)。不會因為點了軟件某個不清晰的按鈕,導致自己代碼找不到了;
  • 規(guī)范自己使用git的規(guī)范,特別是commit提交的內(nèi)容和描述;
  • 更加深入的理解git,有多少人知道git reflog,這個命令在代碼找不到的情況下能救命;
  • 裝X必備,每次提交的時候刷刷敲鍵盤的感覺,誰用誰知道;

效率篇

既然推薦命令行提交代碼,每次都要輸入那么長的命令,如何體現(xiàn)自己的效(BI)率(GE)。可以考慮別名和命令記憶功能。

別名

對于一些常用的操作,完全可以設置一些更短更好用的別名,方便我們使用。個人使用的別名如下,供大家參考:

# vim .gitconfig
[alias]
        ci = commit
        st = status
        co = checkout
        br = branch
        ss = status --short
        df = diff
        dc = diff --cached
        lo = log --oneline
        lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

zsh-autosuggestions

命令自動提示插件,這個是個很有意思也很高效的插件。能記錄平時你輸入過的命令,下次再輸入的時候,它會提前提示你,方便懶人。

github: https://github.com/zsh-users/zsh-autosuggestions

規(guī)范篇

對于git的提交規(guī)范,建議使用Angular的commit規(guī)范,詳見Git的使用規(guī)范。要使用此套規(guī)范建議安裝git cz插件。

git cz

github:https://github.com/commitizen/cz-cli

npm install -g commitizen
commitizen init cz-conventional-changelog --save-dev --save-exact
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
img

conventional-changelog

當你需要從git提交記錄生成更改日志,conventional-changelog插件能滿足你的需求(配合git cz使用)

github:https://github.com/conventional-changelog/conventional-changelog

$ npm install -g conventional-changelog-cli
$ cd my-project
$ conventional-changelog -p angular -i CHANGELOG.md -s

如果您是第一次使用此工具并希望生成以前的所有更改日志,則可以執(zhí)行此操作:

# 只會輸入固定幾個類型的,如Feature、Fix
conventional-changelog -p angular -i CHANGELOG.md -s -r 0
# 輸入所有的類型的
conventional-changelog -p jscs -i CHANGELOG.md -s -r 0

這將覆蓋任何先前的更改日志。

可以使用CLI列出所有可用的命令行參數(shù): conventional-changelog --help.

git flow

img

分支說明

名稱 說明 命名規(guī)范 命名示例 合并目標 合并操作
master 線上穩(wěn)定代碼 master master -- --
release 待發(fā)布分支,下個版本需上線的版本,給QA提測 release release master merge request
feature 功能分支,一個版本對應一個feature分支 feature/xxx xxx = [ 版本號 | 功能名 ] 例如[feature/9.2.0 | feature/house ],但不要是自己的名字[ feature/pp ] release merge request
dev 開發(fā)分支,每個人都應該有自己獨立的開發(fā)分支 dev/xxx xxx = [ 功能名 | 版本號 | JIRA ] + 唯一標識 feature/xxx、release merge request
hotfix 緊急修復分支 hotfix/xxx xxx = [ 功能名 | JIRA ] master merge request

注意:

1、提交代碼前需合并目標分支,沖突在自己本地分支中解決?。?!(推薦使用rebase進行分支合并)

2、執(zhí)行Merge Request之后,原始分支應該在遠端刪除!?。?/strong>

gitflow插件

$ brew install git-flow

如果對gitflow整個流程十分熟悉的時候,不太推薦此插件,個人不是很習慣。

git flow 
init      Initialize a new git repo with support for the branching model.
feature   Manage your feature branches.
release   Manage your release branches.
hotfix    Manage your hotfix branches.
support   Manage your support branches.
version   Shows version information.

github:https://github.com/nvie/gitflow

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 姓名:王康 公司:揚州方圓建筑工程有限公司 2018年3月16日~3月18日上海361期 《六項精進》感謝二組 學...
    王小康KK閱讀 222評論 0 0
  • 舊街上的老房子前的花兒又香了 那破敗的屋子里依舊有風鈴回響 碧藍的天空中早已經(jīng)是夕陽西下 邁向漆黑的夜晚以及明日的...
    迷曳閱讀 247評論 0 3
  • 不會空著不能怪我,太tm難了
    Luckey上官閱讀 281評論 0 0
  • 已經(jīng)許久沒有單獨讀完整整一本書了。說來也慚愧,每次讀書的時候都有些囫圇吞棗,巴不得快點讀完,...
    謝小芬閱讀 313評論 0 0

友情鏈接更多精彩內(nèi)容