如何享受一個(gè)美好的git開(kāi)發(fā)體驗(yàn)

摘取之前寫的新人文檔留個(gè)紀(jì)念。

前置學(xué)習(xí):

熟練使用 oh-my-zsh下 git 簡(jiǎn)寫, 開(kāi)始的時(shí)候會(huì)有些別扭,但是熟練起來(lái)之后會(huì)讓你的操作異常帥氣: git 簡(jiǎn)寫 枚舉。

# 常用簡(jiǎn)寫速查
alias ga='git add'
alias gb='git branch'
alias gba='git branch -a'
alias gbd='git branch -d'
alias gcam='git commit -a -m'
alias gcb='git checkout -b'
alias gco='git checkout'
alias gcp='git cherry-pick'
alias gd='git diff'
alias gfo='git fetch origin'
alias ggpush='git push origin $(git_current_branch)'
alias ggsup='git branch --set-upstream-to=origin/$(git_current_branch)'
alias glgp='git log --stat -p'
alias gm='git merge'
alias gp='git push'
alias gst='git status'
alias gsta='git stash save'
alias gstp='git stash pop'
  • 雙管齊下
    命令行。培育一個(gè)用著快捷、順手的命令行環(huán)境; 圖形工具 (source tree 等);
  • 學(xué)會(huì)使用vim: 花半個(gè)小時(shí)來(lái)學(xué)習(xí)一下vim的基本操作,會(huì)對(duì)之后的開(kāi)發(fā)很有益處;

起手式:美好的開(kāi)始從master分支開(kāi)始

項(xiàng)目分支一般區(qū)分 master(online環(huán)境)、**其他環(huán)境, 除master 外的其他環(huán)境都有存在異常代碼的風(fēng)險(xiǎn),所以【規(guī)定】從master checkout 一條分支作為feature brach,從而減少異常代碼對(duì)你本次開(kāi)發(fā)的影響;

如何寫一個(gè)規(guī)范的commit cz

  1. commit 本質(zhì)上只要描述清楚你本次提交即可,建議使用英文描述;

  2. 事上本沒(méi)有路,走的人多了,也就有了路。 見(jiàn)識(shí)使用 git-cz (commitizen & cz-conventional-changelog )來(lái)定向改善你的commit內(nèi)容;


    如此青春俏皮的commit躍然紙上,誰(shuí)不愛(ài)呢?

分支管理 rebase & merge

  1. 和conflict 做朋友
    新手朋友對(duì)于分支管理合并時(shí)總會(huì)感到有點(diǎn)恐慌,總怕在合并代碼一不小心覆蓋了別人的代碼,從而造成奇異的bug。學(xué)會(huì)閱讀和處理沖突,本質(zhì)上沖突反映了兩個(gè)分支的差異性,如果分支差異性過(guò)大,是不是嗅到一絲bad smell呢?
    學(xué)會(huì)用可視化的方式來(lái)解決沖突,明確的對(duì)比兩個(gè)版本之間的差異,從而減少出錯(cuò)的概率;

  2. 學(xué)會(huì)取舍 - git diff
    區(qū)分rebase & merge時(shí),比較的基準(zhǔn)代碼版本,從而理解當(dāng)前分支合傳入分支的區(qū)別;

rebase 執(zhí)行流程
merge 執(zhí)行流程
  1. 學(xué)會(huì)使用 git cherry-pick
    當(dāng)兩個(gè)分支差異過(guò)大時(shí),使用cherry-pick 無(wú)外乎也是一種不錯(cuò)的方式,這種”撿??“的合代碼方式,磨平了兩個(gè)差異性巨大的分支合并時(shí)帶來(lái)的問(wèn)題,增量的合并使合并操作十分絲滑,但是需要注意的是gcp需要按照順序進(jìn)行,否則無(wú)盡的沖突就會(huì)向你襲來(lái);

  2. 做好一個(gè)”渣男“
    如果你有一些修改暫時(shí)不準(zhǔn)備提交,并且也不準(zhǔn)備放棄。那么你可以臨時(shí)把這些文件通過(guò)"stash"暫存起來(lái),在執(zhí)行完手頭的操作之后,再?gòu)摹眰涮ァ岸褩V姓业侥銊偛艜捍娴拇a,重新進(jìn)行編輯;

如何提一個(gè) MR or PR

  1. gitlab 之 MR, github 之 PR
  2. release tag *
  3. ...

死亡操作:

  1. 從異常分支(例如:beta分支) checkout出來(lái)并開(kāi)始開(kāi)發(fā),一個(gè)錯(cuò)誤的開(kāi)始很難走到每秒的結(jié)局。


    死亡分支操作
  2. -f / --force (慎用)
  3. 不提交代碼直接移除 / 回滾;
  4. rebase & merge 混用導(dǎo)致git tree 混亂;
  5. ...

ANTI-死亡操作

不要害怕使用git,你的任何操作都會(huì)被記錄下來(lái)(前提是你要記得add)。
  1. reflog
  2. checkout . / -- file
  3. reset --hard / --soft
  4. revert
  5. blame
  6. ...

CI & CD 解放你的雙手 ??

存儲(chǔ)原理 (短時(shí)間之內(nèi)都不會(huì)很重要的內(nèi)容)

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

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

  • [TOC] Git 內(nèi)部實(shí)現(xiàn)原理剖析[http://www.itdecent.cn/p/8154ac47d406...
    Whyn閱讀 1,008評(píng)論 0 0
  • 文章略長(zhǎng),預(yù)計(jì)閱讀時(shí)間28分鐘 一.git init 知識(shí)點(diǎn): 創(chuàng)建版本庫(kù)的兩種方式可以創(chuàng)建git-demo目錄,...
    shuxiaotai閱讀 485評(píng)論 0 0
  • 使用 Git 很久了,一直以為對(duì)于常用的這些命令已經(jīng)很了解了,可是突然發(fā)現(xiàn)對(duì)于很多東西的理解都太過(guò)淺顯,于是不得不...
    你叫呆小瓜閱讀 1,491評(píng)論 0 2
  • 以下內(nèi)容是我在學(xué)習(xí)和研究Git時(shí),對(duì)Git操作的特性、重點(diǎn)和注意事項(xiàng)的提取、精練和總結(jié),可以做為Git操作的字典,...
    科研者閱讀 3,720評(píng)論 2 19
  • git官方英文操作文檔參考[https://git-scm.com/book/zh/v2/Git-%E5%9F%B...
    dmengmeng閱讀 521評(píng)論 0 0

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