軟件的版本控制

軟件的版本控制

版本控制是一種技術(shù)菠劝,它能幫助我們記錄一個(gè)文件從誕生到定案的過程中發(fā)生的變化维雇,便于將來查閱特定版本的修訂情況淤刃。

1 沒有版本控制時(shí)的問題

如果我們沒有對編寫的代碼進(jìn)行版本控制,那么會(huì)出現(xiàn)以下幾個(gè)問題:

  • 需要手動(dòng)備份不同版本的代碼吱型,浪費(fèi)時(shí)間和空間逸贾。
  • 難以恢復(fù)至以前的正確版本。例如:我上周寫的代碼是對的津滞,這周改出問題了铝侵,但是沒有對上周寫的進(jìn)行備份,如果想恢復(fù)到上周寫的樣子触徐,那就得重新寫一遍咪鲜。
  • 代碼整合過程需要人工拷貝,再復(fù)制和粘貼锌介,極其繁瑣嗜诀。
  • 修復(fù)Bug困難。例如:現(xiàn)在需要整合代碼孔祸,大家都紛紛開始復(fù)制和粘貼代碼隆敢,所有人都把自己寫的代碼放在前面,別人寫的代碼放在后面崔慧。如果合并的代碼出現(xiàn)了沖突拂蝎,有人說第100行代碼有運(yùn)行時(shí)錯(cuò)誤需要修改,那么問題來了惶室,每個(gè)人的第100行代碼都不同温自,修改代碼的過程變得困難。
  • 難以追溯問題代碼的修改人和修改時(shí)間皇钞,如果不寫注釋的話悼泌。
  • 代碼管理混亂,項(xiàng)目版本發(fā)布困難夹界。要想開發(fā)一個(gè)產(chǎn)品馆里,如果每個(gè)人手上的代碼都不一樣,那么就需要花費(fèi)時(shí)間來討論一個(gè)問題:到底用誰的代碼去發(fā)布成產(chǎn)品可柿。

2 版本控制工具

目前主要有三種版本控制工具鸠踪,分別是CVS、SVN和Git复斥。因?yàn)镃VS已經(jīng)過時(shí)营密,所以在這里只介紹SVN和Git。

2.1 SVN

SVN(Subversion)是一個(gè)集中式的版本控制工具目锭。

開發(fā)人員使用SVN工作時(shí)的流程圖:


01-SVN工作流程圖.png

SVN的特點(diǎn):使用統(tǒng)一的中央倉庫對文件進(jìn)行集中式的管理评汰。

SVN的優(yōu)點(diǎn):

  • 操作簡單,學(xué)習(xí)成本低侣集。
  • 能對文件進(jìn)行權(quán)限控制键俱。

SVN的缺點(diǎn):在沒有網(wǎng)絡(luò)的情況下就不能對文件進(jìn)行版本控制操作。

SVN的適用場景:有權(quán)限控制的代碼開發(fā)(即不是每個(gè)人都可以看到項(xiàng)目中的所有代碼)和軟件文檔的管理世分。

2.2 Git

Git是一個(gè)分布式的版本控制工具编振。

開發(fā)人員使用Git工作時(shí)的流程圖:


02-Git工作流程圖.png

Git的特點(diǎn):既能集中式又能分布式地管理文件。Git的集中式管理模式和SVN的一樣臭埋,它的分布式管理模式是每個(gè)開發(fā)人員都要自己維護(hù)一個(gè)與中央倉庫關(guān)聯(lián)的本地倉庫踪央。

Git的優(yōu)點(diǎn):

  • 分布式管理,數(shù)據(jù)不易丟失瓢阴。因?yàn)槊總€(gè)客戶端上都持有一個(gè)與中央倉庫一樣的本地倉庫畅蹂,所以當(dāng)中央倉庫的數(shù)據(jù)丟失時(shí),可以從任意一個(gè)客戶端上獲取數(shù)據(jù)進(jìn)行恢復(fù)荣恐。
  • 支持離線版本控制液斜。在沒有網(wǎng)絡(luò)的時(shí)候累贤,開發(fā)人員可以使用本地倉庫進(jìn)行版本控制操作,待有網(wǎng)后少漆,再將改變的內(nèi)容推送到中央服務(wù)器臼膏。
  • 支持現(xiàn)場版本控制。例如:產(chǎn)品部署在客戶那邊示损,出了Bug渗磅,需要去現(xiàn)場進(jìn)行修復(fù)。如果我們使用的是SVN检访,我們需要將修改完的代碼拷貝回來始鱼,然后復(fù)制粘貼進(jìn)工程,最后再與SVN進(jìn)行同步脆贵。反之医清,如果我們使用的是Git,我們只需要在工程的目錄下初始化Git卖氨,然后修正Bug状勤,最后再打個(gè)補(bǔ)丁把補(bǔ)丁帶回去就行了。
  • 服務(wù)器壓力小双泪。因?yàn)槭褂肧VN的開發(fā)人員會(huì)一直連著服務(wù)器進(jìn)行操作持搜,但是使用Git的開發(fā)人員可能是一周甚至一個(gè)月才與服務(wù)器進(jìn)行交互,所以SVN服務(wù)器承受的訪問量與數(shù)據(jù)量要比Git服務(wù)器大很多焙矛。
  • 支持補(bǔ)丁技術(shù)葫盼。任意兩個(gè)開發(fā)人員可以通過補(bǔ)丁來整合代碼,整合過程不通過中央服務(wù)器村斟。
  • Git的響應(yīng)速度比SVN快贫导。

Git的缺點(diǎn):

  • 學(xué)習(xí)成本高。因?yàn)樾枰獙W(xué)習(xí)很多的操作指令蟆盹。
  • 不能對文件進(jìn)行權(quán)限控制孩灯。因?yàn)镚it使用分布式管理,所以每個(gè)客戶端就會(huì)持有與中央服務(wù)器一樣的倉庫逾滥,擁有了一樣的倉庫就擁有了中央倉庫上所有的代碼峰档。

Git的適用場景:無權(quán)限控制的代碼開發(fā)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寨昙,一起剝皮案震驚了整個(gè)濱河市讥巡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌舔哪,老刑警劉巖欢顷,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異捉蚤,居然都是意外死亡抬驴,警方通過查閱死者的電腦和手機(jī)炼七,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門布持,熙熙樓的掌柜王于貴愁眉苦臉地迎上來特石,“玉大人,你說我怎么就攤上這事鳖链。” “怎么了墩莫?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵芙委,是天一觀的道長。 經(jīng)常有香客問我狂秦,道長灌侣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任裂问,我火速辦了婚禮侧啼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘堪簿。我一直安慰自己痊乾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布椭更。 她就那樣靜靜地躺著哪审,像睡著了一般。 火紅的嫁衣襯著肌膚如雪虑瀑。 梳的紋絲不亂的頭發(fā)上湿滓,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機(jī)與錄音舌狗,去河邊找鬼叽奥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛痛侍,可吹牛的內(nèi)容都是我干的朝氓。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼主届,長吁一口氣:“原來是場噩夢啊……” “哼膀篮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起岂膳,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤誓竿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后谈截,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體筷屡,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涧偷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毙死。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片燎潮。...
    茶點(diǎn)故事閱讀 40,090評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖扼倘,靈堂內(nèi)的尸體忽然破棺而出确封,到底是詐尸還是另有隱情,我是刑警寧澤再菊,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布爪喘,位于F島的核電站,受9級(jí)特大地震影響纠拔,放射性物質(zhì)發(fā)生泄漏秉剑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一稠诲、第九天 我趴在偏房一處隱蔽的房頂上張望侦鹏。 院中可真熱鬧,春花似錦臀叙、人聲如沸略水。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽聚请。三九已至,卻和暖如春稳其,著一層夾襖步出監(jiān)牢的瞬間驶赏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工既鞠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留煤傍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓嘱蛋,卻偏偏與公主長得像蚯姆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子洒敏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評論 2 355

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理龄恋,服務(wù)發(fā)現(xiàn),斷路器凶伙,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • 多種多樣的工作流使得在項(xiàng)目中實(shí)施Git時(shí)變得難以選擇郭毕。這份教程提供了一個(gè)出發(fā)點(diǎn),調(diào)查企業(yè)團(tuán)隊(duì)最常見的Git工作流函荣。...
    JSErik閱讀 4,407評論 2 8
  • 摘要: Zookeeper集群安裝 SpringMVC+Mybatis, Dubbo+Zookeeper, jav...
    ITsupuerlady閱讀 178評論 0 0
  • 漫天飛舞的雪片显押, 你來的不早不晚扳肛, 在大地需要你的時(shí)候, 帶來莊稼人滿心的歡喜乘碑!
    effort_nana閱讀 230評論 0 0
  • Maybe you don't know me Maybe I passed you just now Maybe...
    IFBUT閱讀 427評論 0 3