我們知道,數(shù)字IC的開發(fā)是一群研發(fā)工程師圍繞著RTL代碼干活的過程,代碼的迭代動(dòng)輒成千上萬個(gè)版本。
對(duì)于沒接觸過項(xiàng)目的新手,不知道是否想過這個(gè)問題:如何保證大家修改過的代碼實(shí)時(shí)同步更新到每一個(gè)人手里呢?
版本控制系統(tǒng)就是一種用于多人協(xié)同開發(fā)的技術(shù),可以管理我們對(duì)文件、目錄或工程等內(nèi)容的修改歷史,方便查看更改歷史記錄,還可以恢復(fù)以前的版本。
目前常用的版本控制系統(tǒng)有兩種,集中式的版本控制和分布式版本控制。
1.集中式的版本控制系統(tǒng):SVN
版本庫集中存放在中央repository,這個(gè)repository像一個(gè)文件服務(wù)器,它會(huì)記住每一次用戶提交的文件改動(dòng),所以用過可以查看文件的變動(dòng)歷史,也可以將文件恢復(fù)到之前的版本。新人開始干活了,用的都是個(gè)人電腦,所以要先從中央repository獲取最新的版本,然后開始干活,干完活了,再把自己的文件修改上傳給中央repository,生成新的版本。集中式版本控制系統(tǒng)必須聯(lián)網(wǎng)才能工作,局域網(wǎng)中速度還行,但是在互聯(lián)網(wǎng)環(huán)境下,網(wǎng)速通常比較慢。
repository(源代碼庫):源代碼統(tǒng)一存放的地方,用戶提取、提交、更新代碼的地方
checkout(提?。簞傞_始工作時(shí),你需要從repository checkout一份
commit(提交):工作對(duì)代碼進(jìn)行了修改,你需要將修改的文件Commit到repository
update (更新):別人也會(huì)提交新代碼到repository, Update一下你就可以和repository上的源代碼同步了
開發(fā)流程:剛接入項(xiàng)目,svn co xxx,checkout源代碼庫,就可以開始和同事協(xié)同開發(fā)了;第二天,同事昨天做了一些文件修改,為了保持同步,svnup xxx,update獲取最新的代碼;工作了幾天,你發(fā)現(xiàn)了一些bug,對(duì)相關(guān)文件做修改并調(diào)試成功了,這時(shí)候svn ci xxx,將修改的文件提交至repository中,同事就可以看到你的修改了。
如果你想在版本庫添加新的文件用于更新迭代,svn add xxx,將新文件加到repository中。當(dāng)你和同事同時(shí)對(duì)一個(gè)文件進(jìn)行了修改,SVN會(huì)自動(dòng)合并兩種修改,但是如果修改的是同一行,就會(huì)報(bào)conflict沖突提示,這時(shí)候就需要你們double check文件了。
常用命令:
svnadd 添加文件、目錄或符號(hào)鏈
svn co從版本庫取出一個(gè)工作拷貝
svn ci將修改從工作拷貝發(fā)送到版本庫
svndel 從工作拷貝或版本庫刪除一個(gè)項(xiàng)目
svndiff 比較兩條路徑的區(qū)別
svnhelp 幫助
svninfo 打印路徑的信息
svnlog 顯示提交日志信息
svnmerge 應(yīng)用兩組源文件的差別到工作拷貝路徑
svnresolved 刪除工作拷貝文件或目錄的“沖突”狀態(tài)
svnrevert 取消所有的本地編輯
svn up更新本地的工作拷貝
2. 分布式的版本控制系統(tǒng):Git
沒有中央repository,因?yàn)樵诿恳粋€(gè)使用者電腦上,就有一個(gè)完整的數(shù)據(jù)repository,就算沒有網(wǎng)絡(luò)依然可以使用Git,離線在本地提交,在連網(wǎng)時(shí)推送到相應(yīng)的服務(wù)器或者其他用戶本地,除此之外Git還具有強(qiáng)大的分支管理功能。
working directory(工作區(qū)):在本地電腦里的工作目錄
staging area(暫存區(qū)):index文件中,緩沖提交操作
repository(版本庫):管理所有版本文件的倉庫
工作流程:克隆Git資源作為工作目錄;在本地的資源上修改或添加文件;如果他人提交了修改,你可以更新資源;調(diào)試通過后提交修改的文件;發(fā)現(xiàn)還是有錯(cuò)誤,可以撤回提交再次修改后提交。git add從工作區(qū)提交到暫存區(qū),git commit從暫存區(qū)提交到本地倉庫,git push從本地倉庫提交到遠(yuǎn)程倉庫。
常用命令:
git clone 拷貝一份遠(yuǎn)程倉庫,即下載一個(gè)項(xiàng)目
git add 添加文件到暫存區(qū)
git commit 將暫存區(qū)內(nèi)容添加到倉庫中
git checkout 切換分支或恢復(fù)工作樹文件
git pull 下載遠(yuǎn)程代碼并合并
git push 上傳遠(yuǎn)程代碼并合并
git status 查看倉庫當(dāng)前狀態(tài),顯示有變更的文件
git diff 比較文件的不同
git reset 回退版本
git rm刪除工作區(qū)文件
git mv 移動(dòng)或重命名工作區(qū)文件
git init 初始化倉庫
git log 查看歷史提交記錄
git fetch 從遠(yuǎn)程獲取代碼庫
兩者對(duì)比:
小結(jié):
Git和SVN都是目前主流的版本控制系統(tǒng)。Git可能更難壓縮和存儲(chǔ)二進(jìn)制文件,但它可以離線使用。分支和合并支持也被認(rèn)為是Git的優(yōu)勢所在。SVN具有全局的版本號(hào),而Git則沒有。在磁盤空間存儲(chǔ)方面,SVN和Git存儲(chǔ)庫之間幾乎相等。但不管怎樣,用哪個(gè)還不得是取決于你的公司?
審核編輯:劉清
-
RTL
+關(guān)注
關(guān)注
1文章
384瀏覽量
59623 -
數(shù)字IC
+關(guān)注
關(guān)注
1文章
37瀏覽量
12459 -
svn
+關(guān)注
關(guān)注
0文章
27瀏覽量
8622
原文標(biāo)題:你真的懂GIT和SVN嗎?
文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論