面試過程中信粮,可能會問及一些關(guān)于版本控制的問題,理解下SVN和Git的原理,記住常用命令即可。
SVN
- SVN 是集中式源代碼管理工具
概念:
1> Repository 代碼倉庫绕辖,保存代碼的倉庫
2> Server 服務(wù)器,保存所有版本的代碼倉庫
3> Client 客戶端擂红,只保存當(dāng)前用戶的代碼倉庫
4> 用戶名&密碼 訪問代碼倉庫需要使用自己的"用戶名和密碼"仪际,從而可以區(qū)分出不同的人對代碼做的修改
操作:
1> checkout 將服務(wù)器上最新的代碼倉庫下載到本地,"只需要做一次"
2> update 從服務(wù)器上將其他人所做的修改下載到本地昵骤,"每天上班必須要做的事情"
3> commit 將工作提交到服務(wù)器树碱,"每天下班之前至少做一次"
- SVN服務(wù)器安裝(略)
- SVN常用命令
切換工作目錄
$ cd 工作目錄
checkout服務(wù)器上的代碼倉庫
$ svn co http://xxx/svn/xxxx --username=manager --password=manager
提示:checkout(co)之后,命令行會記錄用戶名和密碼变秦,后續(xù)操作不用再另行指定
查看本地代碼庫狀態(tài)
$ svn st
錯(cuò)誤提示:"is not a working copy"成榜,必須在svn的工作目錄下才能正確使用svn的命令
查看svn日志
$ svn log
查看某一個(gè)文件的日志
$ svn log filename
查看某一個(gè)文件某個(gè)版本的日志
$ svn log filename@1
創(chuàng)建文件
$ touch main.c
打開并編寫文件內(nèi)容
$ open main.c
查看工作目錄狀態(tài)
$ svn st
將文件添加到本地版本庫中
$ svn add main.c/main.*
將文件提交到服務(wù)器的版本庫中
$ svn ci -m "備注信息"
注意:一定要養(yǎng)成寫注釋的良好習(xí)慣
刪除文件
$ svn rm Person.h
提交刪除
$ svn ci -m "刪除了文件"
注意:不要使用文件管理器直接刪除文件
撤銷修改
$ svn revert Person.m
恢復(fù)到之前的某個(gè)版本
$ svn update -r 5
沖突解決
(p) postpone 對比
(mc) mine-conflict 使用我的
(tc) theirs-conflict 使用對方的
svn st 顯示的文件狀態(tài)
' ' 沒有修改
'A' 被添加到本地代碼倉庫
'C' 沖突
'D' 被刪除
'I' 被忽略
'M' 被修改
'R' 被替換
'X' 外部定義創(chuàng)建的版本目錄
'?' 文件沒有被添加到本地版本庫內(nèi)
'!' 文件丟失或者不完整(不是通過svn命令刪除的文件)
'~' 受控文件被其他文件阻隔
Git
- git是一款開源的分布式版本控制工具
$ git help
查看git所有命令的幫助
$ git help 子命令
要退出幫助信息,按"q"
翻看下頁蹦玫,按"空格"
翻看上頁赎婚,按"CTRL+B"
要搜索相關(guān)文字,按"/"然后輸入"相關(guān)文字"
創(chuàng)建代碼倉庫
$ git init
配置用戶名和郵箱
$ git config user.name manager
$ git config user.email manager@gmail.com
以上兩個(gè)命令會將用戶信息保存在當(dāng)前代碼倉庫中
如果要一次性配置完成可以使用一下命令
$ git config --global user.name manager
$ git config --global user.email manager@gmail.com
以上兩個(gè)命令會將用戶信息保存在用戶目錄下的 .gitconfig 文件中
查看當(dāng)前所有配置
$ git config -l
創(chuàng)建代碼樱溉,開始開發(fā)
$ touch main.c
$ open main.c
將代碼添加到代碼庫
查看當(dāng)前代碼庫狀態(tài)
$ git status
將文件添加到代碼庫
$ git add main.c
將修改提交到代碼庫
$ git commit -m "添加了main.c"
在此一定要使用 -m 參數(shù)指定修改的備注信息
否則會進(jìn)入 vim 編輯器惑淳,如果對vim不熟悉,會是很糟糕的事情
將當(dāng)前文件夾下的所有新建或修改的文件一次性添加到代碼庫
$ git add .
添加多個(gè)文件
$ touch Person.h Person.m
$ git add .
$ git commit -m "添加了Person類"
$ open Person.h
$ git add .
$ git commit -m "增加Person類屬性"
注意 使用git時(shí)饺窿,每一次修改都需要添加再提交,這一點(diǎn)是與svn不一樣的
查看所有版本庫日志
$ git log
查看指定文件的版本庫日志
$ git log 文件名
回到當(dāng)前版本移斩,放棄所有沒有提交的修改
$ git reset --hard HEAD
回到上一個(gè)版本
$ git reset --hard HEAD^
回到之前第3個(gè)修訂版本
$ git reset --hard HEAD~3
回到指定版本號的版本
$ git reset --hard e695b67
查看分支引用記錄
$ git reflog
為什么要用源代碼管理工具
- 能追蹤一個(gè)項(xiàng)目從誕生一直到定案的過程
- 記錄一個(gè)項(xiàng)目的所有內(nèi)容變化
- 方便地查閱特定版本的修訂情況
最常用的版本控制工具是什么肚医,能大概講講原理么?
參考答案:
- 最常用的版本控制工具有SourceTree(GIT)和CornerStone(SVN)向瓷;
- 原理提到svn是集中式代碼管理肠套,解釋下具體意思,git也這樣回答就行了猖任。
- 集中式代碼管理(SVN)的核心是服務(wù)器你稚,所有開發(fā)者在開始新一天的工作之前必須從服務(wù)器獲取代碼,然后開發(fā),最后解決沖突刁赖,提交搁痛。所有的版本信息都放在服務(wù)器上。如果脫離了服務(wù)器宇弛,開發(fā)者基本上可以說是無法工作的鸡典。
- 分布式的版本控制系統(tǒng),在Git中并不存在主庫這樣的概念枪芒,每一份出的庫都可以獨(dú)立使用彻况,任何兩個(gè)庫之間的不一致之處都可以進(jìn)行合并。
文章如有問題舅踪,請留言纽甘,我將及時(shí)更正。
滿地打滾賣萌求贊抽碌,如果本文幫助到你悍赢,輕點(diǎn)下方的紅心,給作者君增加更新的動(dòng)力咬展。