《iOS知識(shí)點(diǎn)梳理-版本控制》

知識(shí)點(diǎn)總結(jié)中,如有幸被您觀看,更有可能看到不足,期待指出交流

前言

日常工作中,肯定會(huì)使用到一些關(guān)于版本控制的問(wèn)題,理解 SVN 和 Git 的原理,回顧常用命令行


SVN

  • svn 集中式源碼管理工具
概念:
  • Repository (代碼倉(cāng)庫(kù), 保存代碼的倉(cāng)庫(kù))
  • Server (服務(wù)器, 保存所有版本的代碼倉(cāng)庫(kù))
  • Client (客戶端, 只保存當(dāng)前用戶的代碼倉(cāng)庫(kù))
  • 用戶名&密碼 (訪問(wèn)代碼倉(cāng)庫(kù)需要使用自己的用戶名和密碼,從而可以區(qū)分出不同人對(duì)代碼做的修改)
操作
  • checkout (將服務(wù)器上面最新的代碼下載到本地,"只需要做一次")
  • update (從服務(wù)器更新最新的代碼,"每天上班都需要做的事情")
  • commit (將工作提交到服務(wù)器, "每天下班之前事少做一次")
SVN服務(wù)器安裝(暫時(shí)不寫)
SVN常用命令
  • 切換工作目錄
cd 工作目錄
  • checkout 服務(wù)器上的代碼倉(cāng)庫(kù)
svn co http://xxx/svn/xxxx --username=manager --password=manager

提示: checkout(co)之后, 命令行會(huì)記錄用戶名和密碼,后續(xù)操作不用再另行指定

  • 查看本地代碼庫(kù)狀態(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
  • 將文件添加到本地版本庫(kù)中
svn add main.c/main.*
  • 將文件提交到服務(wù)器的版本庫(kù)中
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) 對(duì)比
  • mc(mine-conflict) 使用我的
  • tc(theirs-conflict) 使用對(duì)方的
svn st 顯示的文件狀態(tài)
  • ' ' (沒(méi)有被修改)
  • 'A' (被添加到本地代碼倉(cāng)庫(kù))
  • 'C' (沖突)
  • 'D' (被刪除)
  • 'I' (被忽略)
  • 'M' (被修改)
  • 'R' (被替換)
  • 'X' (外部定義創(chuàng)建的版本目錄)
  • '?' (文件沒(méi)有被添加到本地版本庫(kù)內(nèi))
  • '!' (文件丟失或者不完整,而且不是通過(guò) svn 命令刪除的文件)
  • '~' (受控文件被其他文件阻隔)

Git

  • git 是一款開源的分布式版本控制工具
操作
  • 查看git的所有命令幫助
git help
  • 退出幫助信息,按"q"; 翻看下頁(yè),按住"空格"; 翻看上頁(yè),按住"ctrl+b"; 要搜索相關(guān)文字, 按"/"然后輸入"相關(guān)文字";
git help 子命令
  • 創(chuàng)建代碼倉(cāng)庫(kù)
git init
  • 配置用戶名和郵箱
git config user.name manager
git config user.email manager@gmail.com

以上倆個(gè)命令將會(huì)將用戶信息保存在當(dāng)前代碼倉(cāng)庫(kù)中

  • 如果要一次性配置完成可以使用一下的命令
git config -- global user.name manager
git config -- global user.email manager@gmail.com

以上倆個(gè)命令會(huì)將用戶信息保存在用戶目錄下的 .gitconfig 文件中

  • 查看當(dāng)前所有配置
git config -l
  • 創(chuàng)建代碼,開始開發(fā)
touch main.c
  • 將代碼添加到代碼庫(kù)
open main.c
  • 查看當(dāng)前代碼庫(kù)狀態(tài)
git status
  • 將文件添加到代碼庫(kù)
git add main.c
  • 將修改提交到代碼庫(kù)
git commit -m"添加了main.c"

注意: 這個(gè)地方一定要使用 -m 參數(shù)指定修改的備注信息 否則會(huì)進(jìn)入vim 編輯器,如果對(duì)vim不熟悉,會(huì)是一件很糟糕的事情

  • 將當(dāng)前文件夾下的所有新建或修改的文件一次性添加到代碼庫(kù)
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í),每一次的修改都需要添加在提交, 著一定和svn是不一樣的

  • 查看所有本本庫(kù)日志
git log
  • 回到當(dāng)前版本, 放棄所有沒(méi)有提交的修改
git reset --hard HEAD
  • 回到上一個(gè)版本
git reset --hard head^
  • 回到之前的第三個(gè)修訂版本
git reset --hard head~3
  • 回到指定版本號(hào)的版本
git reset -- hard e695b67
  • 查看分支引用記錄
git reflog
為什么要用源代碼管理工具
  • 能追蹤一個(gè)項(xiàng)目從誕生一直到定案的過(guò)程
  • 記錄一個(gè)項(xiàng)目的所有內(nèi)容變化
  • 方便的查閱特定版本的修訂清情況
最常用的版本控制工具,我大體原理
  • 最常用的是 svn 和 git
  • svn 是集中式代碼管理, git 是分布式版本控制系統(tǒng)
  • 集中式代碼管理的核心是服務(wù)器, 所有開發(fā)者在開始新一天的工作之前必須從服務(wù)器上面獲取代碼,然后開發(fā),最后解決沖突,提交. 所有版本信息都放在服務(wù)器上.如果脫離了服務(wù)器,開發(fā)者基本上可以說(shuō)是無(wú)法工作的.
  • 分布式的版本控制系統(tǒng),在git中并不存在主庫(kù)這樣的概念,每一份出的庫(kù)都可以獨(dú)立使用,任何倆個(gè)庫(kù)之前的不一致之處都可以進(jìn)行合并

其他,UNIX常用命令

最后寫到這里,在寫點(diǎn)東西結(jié)束

  • cd 改變工作目錄
  • pwd 輸出當(dāng)前工作目錄的絕對(duì)路徑
    在unix中要執(zhí)行什么命令,一定要知道自己在哪個(gè)文件下
  • ls 查看文件
  • ls -a 顯示所有文件
  • ls -l 列表顯示文件
  • ls - la 列表顯示所有文件
  • touch 用于更改文件訪問(wèn)和修改時(shí)間的標(biāo)準(zhǔn)unix程序, 也被用于創(chuàng)建文件
    提示:
  • 命令和參數(shù)之間需要添加空格
  • 如果要使用當(dāng)前目錄中的文件名, 輸入到一般的時(shí)候, 可以用 Tab 補(bǔ)全命令行.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS 開發(fā) SVN 版本控制器 更多技術(shù)交流請(qǐng)加群 iOS技術(shù)聯(lián)盟 27512466 SVN是Subversio...
    Sunny_Fight閱讀 8,988評(píng)論 7 63
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,564評(píng)論 19 139
  • 源代碼管理工具的起源 為什么會(huì)出現(xiàn)源代碼管理工具? 為了解決在軟件開發(fā)過(guò)程中,由源代碼引發(fā)的各種蛋疼繁瑣問(wèn)題 源代...
    小白文_Vincent閱讀 3,544評(píng)論 2 8
  • 細(xì)雨飄飛萬(wàn)物生,花紅柳綠自欣榮。 憂君夏日多狂暴,沖碎荷香面目猙。
    繁花落盡深眸閱讀 557評(píng)論 4 16

友情鏈接更多精彩內(nèi)容