可能碰到的iOS筆試面試題(2)--版本控制

面試過程中信粮,可能會問及一些關(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)力咬展。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泽裳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子破婆,更是在濱河造成了極大的恐慌涮总,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祷舀,死亡現(xiàn)場離奇詭異瀑梗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)裳扯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門抛丽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饰豺,你說我怎么就攤上這事亿鲜。” “怎么了冤吨?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵蒿柳,是天一觀的道長。 經(jīng)常有香客問我漩蟆,道長垒探,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任怠李,我火速辦了婚禮圾叼,結(jié)果婚禮上蛤克,老公的妹妹穿的比我還像新娘。我一直安慰自己夷蚊,他們只是感情好构挤,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著撬码,像睡著了一般儿倒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呜笑,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天夫否,我揣著相機(jī)與錄音,去河邊找鬼叫胁。 笑死凰慈,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的驼鹅。 我是一名探鬼主播微谓,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼输钩!你這毒婦竟也來了豺型?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤买乃,失蹤者是張志新(化名)和其女友劉穎姻氨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剪验,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肴焊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了功戚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娶眷。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖啸臀,靈堂內(nèi)的尸體忽然破棺而出届宠,到底是詐尸還是另有隱情,我是刑警寧澤乘粒,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布席揽,位于F島的核電站,受9級特大地震影響谓厘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寸谜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一竟稳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦他爸、人聲如沸聂宾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽系谐。三九已至,卻和暖如春讨跟,著一層夾襖步出監(jiān)牢的瞬間纪他,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工晾匠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留茶袒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓凉馆,卻偏偏與公主長得像薪寓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子澜共,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

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

  • 源代碼管理工具的起源 為什么會出現(xiàn)源代碼管理工具向叉? 為了解決在軟件開發(fā)過程中,由源代碼引發(fā)的各種蛋疼繁瑣問題 源代...
    小白文_Vincent閱讀 3,156評論 2 8
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理嗦董,服務(wù)發(fā)現(xiàn)母谎,斷路器,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • Swift版本點(diǎn)擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,293評論 7 249
  • 今天看到生產(chǎn)數(shù)據(jù)庫中冻记,其中一個(gè)日志表的數(shù)據(jù)超過130W,并且增長迅速来惧。擔(dān)心數(shù)據(jù)過大會影響CR效率(日志表冗栗,所以沒有...
    我是大彬子閱讀 4,600評論 0 0
  • 我是姐姐,我有個(gè)雙胞胎的妹妹供搀,今晚我們吵架了隅居。 事情是這樣的,因?yàn)楣ぷ髟蚋鹋埃倚枰獣鹤≡诿妹米庾〉姆孔永镆粋€(gè)月胎源,和...
    21ffd3e2b390閱讀 2,019評論 0 0