首先聲明一點(diǎn)抚垄,本文是記錄自己所在團(tuán)隊(duì)中因?yàn)殄e(cuò)誤的使用git造成的一些問題羹与,絕對(duì)沒有詆毀git神器的意思娩嚼,我們都是很喜愛這個(gè)工具的魏宽。
現(xiàn)在的團(tuán)隊(duì)正在使用git作為版本管理工具腐泻,但是大家都始終沒有很好的用起來,反而因?yàn)橐恍╁e(cuò)誤的流程或者習(xí)慣引起一些問題湖员,在這里做一個(gè)總結(jié)贫悄。
1,團(tuán)隊(duì)成員因?yàn)榉止げ煌锼ぃ瑢?duì)于版本管理的認(rèn)識(shí)不同窄坦,加上git使用命令行操作,很多同事的基礎(chǔ)薄弱凳寺,停留在僅僅會(huì)用push/pull的程度鸭津;
2,git的.gitignore文件的管理肠缨,沒有搞清楚到底應(yīng)該忽略些什么東西
3逆趋,大家沒有及時(shí)/小步提交的習(xí)慣,都是在下班前才把所有工作做一次提交晒奕,并且commit log很不完善闻书,信息和代碼不一致名斟,導(dǎo)致后續(xù)處理非常麻煩;
4魄眉,在處理緊急任務(wù)時(shí)砰盐,往往做一次臨時(shí)提交,commit log寫一些temp等的無用信息坑律,導(dǎo)致引入一些不完整沒有測(cè)試保證的代碼岩梳;
5,branch扮演著git中非常重要的角色晃择,但是同事都以自己的名字命名一個(gè)branch冀值,并且將其推入遠(yuǎn)程倉(cāng)庫(kù),導(dǎo)致沒有一個(gè)可部署的branch宫屠,更危險(xiǎn)的是列疗,branch和功能(bug)無關(guān),大家各自改自己的激况,沒有一個(gè)共同的分支起點(diǎn)等作彤,導(dǎo)致合并非常的麻煩并且危險(xiǎn)膘魄!
5乌逐,pull request / merge request等的缺失,導(dǎo)致代碼質(zhì)量無法得到保障创葡,code review也無從做起浙踢;
這些都是很常見的錯(cuò)誤,但是引起的問題卻相當(dāng)嚴(yán)重灿渴,而且隨著項(xiàng)目的不斷進(jìn)展會(huì)變得更加復(fù)雜和不可控洛波,那么又是為什么會(huì)出現(xiàn)這個(gè)問題呢!
1骚露,當(dāng)然是團(tuán)隊(duì)成員素質(zhì)的問題蹬挤,開始初步了解了一下git,大概清楚之后棘幸,便讓大家去做一個(gè)學(xué)習(xí)焰扳,可是很多同事都僅僅是學(xué)會(huì)了push/pull便以為大功告成,當(dāng)然也有一些同事本來是美工或者設(shè)計(jì)之類误续,以前也沒用過版本管理工具吨悍,對(duì)這塊也沒用比較深刻的認(rèn)識(shí),從而也不愿意花時(shí)間去學(xué)習(xí)(特別是git又是用命令行去敲的)蹋嵌。
2育瓜,對(duì)工具的使用有一種為了用而用的心態(tài),以為用上了更高級(jí)的工具栽烂,自己的水平也就提高了躏仇,而沒有去了解這個(gè)工具到底解決了什么問題恋脚,它的工作流程如何和應(yīng)該如何正確的被使用,它有哪些最佳實(shí)踐等焰手。
最后慧起,團(tuán)隊(duì)當(dāng)然是需要進(jìn)步的,就這個(gè)問題可用看出團(tuán)隊(duì)還有相當(dāng)長(zhǎng)的路需要走册倒,但是至少應(yīng)該從幾點(diǎn)做出一些改進(jìn)蚓挤!
團(tuán)隊(duì)有人提議一個(gè)新工具時(shí),應(yīng)該多鼓勵(lì)他自己盡量去弄清楚驻子,然后找時(shí)間做一個(gè)分享灿意,讓大家都有一個(gè)了解,然后如果是這類關(guān)系重大的基礎(chǔ)性工具崇呵,應(yīng)該在了解較成熟的基礎(chǔ)上對(duì)大家做一個(gè)培訓(xùn)缤剧,一定要學(xué)習(xí)一個(gè)良好的工作流程和規(guī)范。
另外域慷,團(tuán)隊(duì)這次吸取了一些比較優(yōu)秀的工作流程荒辕,轉(zhuǎn)出來做個(gè)分享
http://www.oschina.net/translate/version-control-best-practices
http://www.ruanyifeng.com/blog/2012/07/git.html
http://www.ruanyifeng.com/blog/2008/12/a_visual_guide_to_version_control.html