源代碼管理工具——git
什么是git?
- git是一款開源的分布式版本控制工具
- 在世界上所有的分布式版本控制工具中啡省,git是最快收擦、最簡單鼓拧、最流行的
其他版本控制工具
-
CVS
- 最早的開源、免費(fèi)的集中式版本控制工具
- 自身設(shè)計(jì)有問題娜扇,會(huì)造成提交文件不完整错沃,版本庫莫名其妙損壞的情況
-
SVN
- 修正了CVS的一些穩(wěn)定性問題,是目前用得最多的集中式版本庫控制工具
-
ClearCase
- 收費(fèi)的集中式版本控制工具袱衷,安裝比Windows還大捎废,運(yùn)行特別慢
- 能用ClearCase的一般是世界500等大企業(yè)
-
VSS
- 微軟的集中式版本控制工具,集成在VisualStudio中
集中式和分布式版本比較
集中式版本控制
image
分布式版本控制
image
git和SVN的簡單對(duì)比
- 速度
- 在很多情況下致燥,git的速度遠(yuǎn)遠(yuǎn)比SVN快
- 結(jié)構(gòu)
- SVN是集中式管理登疗,git是分布式管理
- 其他
- SVN使用分支比較笨拙,git可以輕松擁有無限個(gè)分支
- SVN必須聯(lián)網(wǎng)才能正常工作嫌蚤,git支持本地版本控制工作
- 舊版本的SVN會(huì)在每一個(gè)目錄置放一個(gè).svn辐益,git只會(huì)在根目錄擁有一個(gè).git
git和SVN的工作流程圖
SVN的工作流程
image
git的工作流程
image
- 分布式和集中式的最大區(qū)別在于:在分布式下
- 開發(fā)者可以本地提交
- 每個(gè)開發(fā)者機(jī)器上都有一個(gè)服務(wù)器的數(shù)據(jù)庫
使用git
Mac上比較好用的git圖形界面客戶端
SourceTree
GitHub
pXcode
git常用指令
git help —— git指令幫助手冊(cè)
查看其他指令的做法 —— git help其他指令
git config —— git的配置信息相關(guān)(修改的是.git/config文件)
配置用戶名 —— git config“user.name”用戶名(用于跟蹤修改記錄)
配置郵箱 —— git config“user.email”郵箱(用于多人開發(fā)間的溝通)
查看配置信息 —— git config–l
編輯配置信息 —— git config–e(用vim編輯,:wq是退出vim編輯器)
設(shè)置指令的別名 —— git configalias.別名 原指令名稱
設(shè)置帶參數(shù)指令的別名 —— git configalias.別名 “原指令名稱 參數(shù)”
將此設(shè)置應(yīng)用到整個(gè)系統(tǒng)中 —— git config––gloabal
git status —— 查文件的狀態(tài)
查看某個(gè)文件的狀態(tài) —— git status文件名
查看當(dāng)前路徑所有文件的狀態(tài) —— git status
git log —— 查看文件的修改日志
查看某個(gè)文件的修改日志 —— git log文件名
查看當(dāng)前路徑所有文件的修改日志 —— git log
用一行的方式查看簡單的日志信息 —— git log––pretty=oneline
查看最近的N次修改 —— git log–N(N是一個(gè)整數(shù))
git diff —— 查看文件最新改動(dòng)的地方
查看某個(gè)文件的最新改動(dòng)的地方 —— git diff文件名
查看當(dāng)前路徑所有文件最新改動(dòng)的地方 —— git diff
git init —— 初始化一個(gè)空的本地倉庫脱吱,生成一個(gè).git目錄智政,用于維護(hù)版本信息
在當(dāng)前路徑初始化倉庫 —— git init
在其他路徑初始化倉庫 —— git init倉庫路徑
git add —— 將工作區(qū)的文件保存到暫緩區(qū)
保存某個(gè)文件到暫緩區(qū)—— git add文件名
保存當(dāng)前路徑的所有文件到暫緩區(qū) —— git add.(注意,最后是一個(gè)點(diǎn) .)
git commit —— 將暫緩區(qū)的文件提交到當(dāng)前分支
提交某個(gè)文件到分支 —— git commit -m ”注釋”文件名
保存當(dāng)前路徑的所有文件到分支 —— git commit -m ”注釋”
git reset —— 版本回退(建議加上––hard參數(shù)箱蝠,git支持無限次后悔)
回退到上一個(gè)版本 —— git reset––hard HEAD^
回退到上上一個(gè)版本 —— git reset––hard HEAD^^
回退到上N個(gè)版本 —— git reset––hard HEAD~N(N是一個(gè)整數(shù))
回退到任意一個(gè)版本 —— git reset––hard 版本號(hào)(版本號(hào)用7位即可)
git reflog —— 查看指令使用記錄(能夠查看所有的版本號(hào))
git rm —— 刪除文件(刪完之后要進(jìn)行commit操作续捂,才能同步到版本庫)
git clone —— 下載遠(yuǎn)程倉庫到本地
下載遠(yuǎn)程倉庫到當(dāng)前路徑 —— git clone倉庫的URL
下載遠(yuǎn)程倉庫到特定路徑 —— git clone倉庫的URL存放倉庫的路徑
git pull —— 下載遠(yuǎn)程倉庫的最新信息到本地倉庫
git push —— 將本地的倉庫信息推送到遠(yuǎn)程倉庫
工作原理
工作區(qū)(Working Directory):倉庫文件夾里除.git目錄以外的內(nèi)容
-
版本庫(Repository):.git目錄,用于存儲(chǔ)記錄版本信息
- 暫緩區(qū)(stage)
- 分支(master):git自動(dòng)創(chuàng)建的第一個(gè)分支
- HEAD指針:用于指向當(dāng)前分支
-
gitadd和gitcommit的原理
- gitadd:把文件修改添加到暫存區(qū)
- gitcommit:把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支
圖1
image
遠(yuǎn)程倉庫
如果是多人團(tuán)隊(duì)開發(fā)宦搬,最好還是搭建一個(gè)遠(yuǎn)程倉庫
- 搭建遠(yuǎn)程倉庫的途徑
- 自己搭建一個(gè)git服務(wù)器:費(fèi)時(shí)費(fèi)力
- 在GitHub上托管項(xiàng)目:公開項(xiàng)目免費(fèi)牙瓢、私有項(xiàng)目收費(fèi),很多第三方開源項(xiàng)目
- 在oschina上托管項(xiàng)目:完全免費(fèi)间校,在國內(nèi)訪問速度快(推薦使用)
第1種:** 搭建GitHub遠(yuǎn)程倉庫 – 配置SSH Key**
步驟一
- 注冊(cè)一個(gè)GitHub帳號(hào)
- 打開“AccountSettings"
- 配置Mac的SSHKey的公鑰(用于限制提交)
步驟二
查看ssh版本 ssh–v 打開終端矾克, ssh-keygen一路enter下。 在Mac上生成SSHKey(在終端輸入下面指令) cd~/.ssh ssh-keygen-t rsa-C "你的郵箱地址” 然后一直敲回車
然后就會(huì)在~/.ssh目錄下生成SSKKey的秘鑰對(duì) id_rsa:私鑰憔足,不可泄露 id_rsa.pub:公鑰胁附,可以公開(將這個(gè)文件的內(nèi)容粘貼到GitHub上)
利用cat指令可以查看文件的內(nèi)容 catid_rsa.pub
步驟三
- 添加倉庫
- 新建工程
- 配置倉庫名稱酒繁、倉庫描述
- 選擇忽略文件的類型
創(chuàng)建完成
第2種: 搭建oschina遠(yuǎn)程倉庫
- 注冊(cè)一個(gè)oschina帳號(hào)
- 新建項(xiàng)目
- 配置名稱、介紹
- 初始化項(xiàng)目
- 獲取倉庫地址
- 創(chuàng)建倉庫
創(chuàng)建完成
附錄:
// 顯示隱藏文件夾
# 顯示隱藏文件
defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder
# 不顯示隱藏文件
defaults write com.apple.finder AppleShowAllFiles No && killall Finder