摘取之前寫的新人文檔留個(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
commit 本質(zhì)上只要描述清楚你本次提交即可,建議使用英文描述;
-
事上本沒(méi)有路,走的人多了,也就有了路。 見(jiàn)識(shí)使用 git-cz (commitizen & cz-conventional-changelog )來(lái)定向改善你的commit內(nèi)容;
如此青春俏皮的commit躍然紙上,誰(shuí)不愛(ài)呢?
分支管理 rebase & merge
和conflict 做朋友
新手朋友對(duì)于分支管理合并時(shí)總會(huì)感到有點(diǎn)恐慌,總怕在合并代碼一不小心覆蓋了別人的代碼,從而造成奇異的bug。學(xué)會(huì)閱讀和處理沖突,本質(zhì)上沖突反映了兩個(gè)分支的差異性,如果分支差異性過(guò)大,是不是嗅到一絲bad smell呢?
學(xué)會(huì)用可視化的方式來(lái)解決沖突,明確的對(duì)比兩個(gè)版本之間的差異,從而減少出錯(cuò)的概率;學(xué)會(huì)取舍 - git diff
區(qū)分rebase & merge時(shí),比較的基準(zhǔn)代碼版本,從而理解當(dāng)前分支合傳入分支的區(qū)別;


學(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);做好一個(gè)”渣男“
如果你有一些修改暫時(shí)不準(zhǔn)備提交,并且也不準(zhǔn)備放棄。那么你可以臨時(shí)把這些文件通過(guò)"stash"暫存起來(lái),在執(zhí)行完手頭的操作之后,再?gòu)摹眰涮ァ岸褩V姓业侥銊偛艜捍娴拇a,重新進(jìn)行編輯;
如何提一個(gè) MR or PR
- gitlab 之 MR, github 之 PR
- release tag *
- ...
死亡操作:
-
從異常分支(例如:beta分支) checkout出來(lái)并開(kāi)始開(kāi)發(fā),一個(gè)錯(cuò)誤的開(kāi)始很難走到每秒的結(jié)局。
死亡分支操作 - -f / --force (慎用)
- 不提交代碼直接移除 / 回滾;
- rebase & merge 混用導(dǎo)致git tree 混亂;
- ...
ANTI-死亡操作
不要害怕使用git,你的任何操作都會(huì)被記錄下來(lái)(前提是你要記得add)。
- reflog
- checkout . / -- file
- reset --hard / --soft
- revert
- blame
- ...

