知識(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ǔ)全命令行.