新公司用SVN來管理代碼,而且公司自己搭建了SVN服務器,所以要學習下SVN的相關命令、服務器搭建等技能知識。上家公司是用Git管理代碼,而且代碼托管在git@oschina上,自然不用操心Git服務器的問題,只要熟悉Git常用的命令就可以了。下面來學習下SVN(客戶端)的基本命令,簡單來說就是:
1,如何從遠程倉庫拉(檢出)代碼、如何拉取(獲取)遠程代碼的更新
2,如何檢查本地倉庫狀態
3,如何添加新文件到代碼庫
4,如何提交文件修改到代碼庫
5,如何查看修改日志
6,如何對比文件
7,如何解決沖突
8,如何回滾更改
如何...,暫時只想到上面的需求,以后想到了或遇到了再完善。
1,先找個SVN服務器來做實驗
其實可以自己搭建一個svn服務器,不過今天暫時先不搭建,先來學svn的基本命令。那么我們先找一個免費的svn服務器,大家可以百度,我找的是這個:淘寶Code。
然后可以根據提示先建一個遠程的項目,就相當於在SVN服務器上新建一個項目。這個和Git其實差不太多。
2,將遠程倉庫的代碼檢出到本地
這一步其實和git也差不多,git是clone到本地。
3,檢查本地代碼狀態
在項目目錄下面執行:svn status,這個和git status也差不多,只不過,如果沒有更改的話,svn好像什么信息也不顯示。
4,添加新文件到本地代碼庫
在learn-svn/trunk下
可以看到svn會提示有新文件被添加,svn add test.note就可以添加文件到版本庫,但svn不支持像git add .這樣的操作。然后再檢查下狀態:
可以看到文件被添加到本地版本庫,這里其實相當於git commit,那么如何提交到遠程倉庫呢?
5,提交代碼到遠程倉庫
svn commit -m "add file"就可以提交到遠程倉庫,這和git的git push不一樣。
6,查看日志
svn log可以查看提交日志
svn log -r 3 -v查看版本3的詳細日志
感覺這個和git log不太一樣,git log提供的信息好像比較多。
7,比較差異
svn diff可以比較代碼差異,在修改未提交到遠程代碼庫時可以比較差異,命令:svn diff trunk 遠程倉庫地址,這個和git差不多。
8,更新本地代碼庫和解決沖突
當a和b同時修改了一個文件,並且a的修改被提交到遠程代碼庫,而b在未更新本地代碼庫的時候卻嘗試提交代碼到遠程代碼庫,這時是不可能提交成功的。這時b需要先更新本地代碼庫:
svn update,這和git fetch/pull不同,但其實實質應該是差不多的,都是先獲取遠程代碼,然后將本地代碼與遠程代碼合並。如果有沖突,則會提示不能合並,解決沖突后才能合並。
svn解決沖突的操作要比git要復雜一些,有時間再仔細看下。
今天先到這兒,后續會接着學習如何在本地創建倉庫、新建分支、刪除分支、合並分支等與分支相關的操作,以及如何搭建SVN服務器。