git使用詳解 terminal命令/sourceTree/Xcode
說到git,必須要先談一下版本控制。什麼是版本控制?我為什麼要關心它呢?版本控制是一種記錄一個或若干檔案內容變化,以便將來查閱特定版本修訂情況的系統。
版本控制的型別大致可以分為三大類:
本地版本控制系統
其中最流行的一種叫做 rcs,它的工作原理基本上就是儲存並管理檔案補丁(patch)。檔案補丁是一種特定格式的文字檔案,記錄著對應檔案修訂前後的內容變化。所以,根據每次修訂後的補丁,rcs可以通過不斷打補丁,計算出各個版本的檔案內容。
集中化版本控制系統
為了讓在不同系統上的開發者協同工作,集中化的版本控制系統( Centralized Version Control Systems
分散式版本控制系統
分散式版本控制系統( Distributed Version Control System,簡稱 DVCS),在這類系統中,像 Git,Mercurial,Bazaar以及 Darcs等,客戶端並不只提取最新版本的檔案快照,而是把程式碼倉庫完整地映象下來。這麼一來,任何一處協同工作用的伺服器發生故障,事後都可以用任何一個映象出來的本地倉庫恢復。因為每一次的提取操作,實際上都是一次對程式碼倉庫的完整備份。
版本控制的類別說完了,那麼為什麼要如此重視git呢?基於其分散式版本控制的優點和工作(建立和切換分支等)的高效性,git已經越來越流行,在國內的IT開發中也會慢慢取代SVN的。當然取代只是博主個人觀點,so,上幹活。
git 的命令列的使用
1、git的初始化 首先在桌面上建立gitTest資料夾,然後建立ios專案並儲存到gitTest資料夾下。當然,這裡講的是git的初始化,所以在建立工程的時候不要勾選建立git倉庫選項,如下圖:由於mac系統是自帶git的,所以git的命令在mac是直接可以使用的。 首先開啟終端看一下本機的git版本:$ git version
對於一個沒有進行版本控制的工程進行初始化(這裡是對gitTest檔案進行初始化) (1)進入目錄 (2)初始化倉庫 $ git init (3)新增檔案到倉庫的暫存區中 $ git add .(新增所有檔案到暫存區) (4) 提交 檔案到倉庫 $ git commit -m '註釋' (-m 加註釋的命令) 注意:3和4可以合成一個命令來完成 $git commit -a -m '註釋' 接下來看終端的操作:
倉庫初始化完之後,在資料夾下會生成一個.git的資料夾,裡面存放的是git的配置檔案和工程的快照。以點開頭的檔案在mac下是隱藏檔案,可以用下面的命名顯示mac的隱藏檔案:
$ defaults write com.apple.finder AppleShowAllFiles -bool true //顯示資料夾 ,隱藏資料夾只要把true改為false
$ killall Finder //徹底關掉Finder
注意:os 10.10之前不用使用killall Finder,只要關掉Finder再重新開啟就能看到效果,os 10.11需要killall Finder才能看到效果
截圖如下:
至此已經把專案加入到了本地的倉庫中,即git初始化完成。在對檔案進行修改的過程中還會使用到一下git 命令:
$ git status //檢視檔案的狀態
$ git diff //檢視未加入暫存區的修改的檔案內容
$ git diff --cached //檢視已經加入暫存區的修改的檔案內容
$ git log //檢視提交的記錄
$ git reset //撤銷修改
2、git status例項如下圖:
說明:凡是有改動但沒有加入到暫存區的檔案都顯示在Changes not staged for commit:下;凡是加入到暫存區沒有提交的檔案都在Changes to be commit:下。
注意:提交的時候,git只會把暫存區中的檔案提交到倉庫中;所以提交的時候一定要看清楚檔案的狀態;
3、git diff 例項如下:
說明:由下圖可以看出在檔案中增加了look diff,然後用git diff 命令可以看出未加入暫存區的檔案的修改;用git diff --cached檢視加入暫存區的檔案修改;當採用 git add . 把所有檔案都加入到暫存區後使用 git diff是檢視不到任何修改的。
4、git log例項如下:
說明:git log 會根據提交時間列出所有提交的記錄;git log -2 會列出最近兩次的提交記錄;git log -p -2 會詳細的列出最近2次修改的記錄;下面的圖為提交了兩次後進行的操作
5、git reset (回退/撤銷)
說明:
回退到之前的某個版本:(本地原始碼會改變)
git reset --hard HEAD^ //回退到上個版本
git reset --hard HEAD^^ //回退到上上個版本
git reset --hard HEAD~100 //回退到前100個版本
git reflog //檢視版本資訊
git reset --hard 版本號 //回退到指定版本
撤銷本次commit (本地原始碼不會改變)
git reset --soft HEAD^
撤銷add (本地原始碼不會改變)
git reset 或者git reset --mixed
回退工作區的修改 (本地原始碼會改變)
git checkout -- filename 撤銷工作區的修改(即沒有add之前修改)
回退到沒有任何修改之前和伺服器一樣
git reset --hard origin/master //將本地版本回退到和遠端伺服器一樣
6、git 分支
幾乎每一種版本控制系統都以某種形式支援分支,而git的分支可以說是git的必殺技(速度快,操作簡單)。使用分支意味著你可以從開發主線上分離開來,然後在不影響主線的同時繼續工作。
命令如下:
<1>、建立新的分支 $ git branch 分支名
<2>、切換分支 $ git checkout 分支名
注意1和2可以合成一個命令來完成: $ git checkout -b 分支名
<3>、合併分支 (即把其他分支和當前分支合併在一起)
(1)切換到要合併到的分支 $ git checkout 分支名
(2) 進行合併 $ git merge 分支名
<4>、刪除分支 $ git branch -d 分支名
<5>、檢視所有分支 $ git branch
7、git新增標籤
<1>建立標籤 $ git tag -a 標籤名 -m ‘註釋’
<2> 切換標籤 $ git checkout 標籤名
<3> 刪除標籤 $ git tag -d 標籤名
<4> 檢視所有標籤 $ git tag
8、遠端倉庫操作
至此,git本地的版本控制用到的命令基本上都有了。接下來來看一下git本地倉庫和遠端倉庫的結合使用。這裡使用https://bitbucket.org倉庫託管網站。登入此網站後先註冊使用者,註冊完使用者後就可以獲得免費的私人倉庫,此倉庫可以允許最多5個人一起共享開發。具體使用方法,這裡就不多說了。開始上乾貨。
在bitbucket網站建立倉庫gitTest,建立完成後如下圖:
點選倉庫進入後,會有提示如下圖:
現在本地已經有了一個倉庫,接下來採用上圖中的第二種方法把本地倉庫推送到bitbucket上
執行完以下git命令之後如上圖,推送本地倉庫到遠端倉庫成功
<1>、$ git remote add origin 遠端倉庫路徑
<2>、$ git push -u origin --all 提交所有的檔案
從現在開始,如果改變了原生代碼並且要提交到遠端伺服器上就要進行以下三步:
<1> commit 提交原生代碼
<2>$ git pull 拉取伺服器上的最新程式碼
<3>$ git push 提交到遠端伺服器
接下來來看一下,本地沒有倉庫,需要從遠端倉庫上clone一份的情況
克隆的命令如下:
<1> git clone 遠端倉庫地址 --------------------直接克隆倉庫到本地,並且本地資料夾的名字和遠端倉庫的名字一樣 <2> git clone 遠端倉庫地址 本地資料夾名字 --------------------直接克隆倉庫到本地,並且本地資料夾的名字和遠端倉庫的名字不一樣 從已有倉庫中獲取乾淨的程式碼//獲取乾淨的程式碼
git archive --format zip --output /Users/Nick/Desktop/git/output.zip master -0
Xcode git版本控制
Xcode 中的操作如下圖所示:
sourceTree 進行程式碼的控制
sourceTree是git倉庫的客戶端,可以在appSotre中或去官方網站下載。
1、新增新的倉庫
新增成功後如下圖所示:
2、開啟後並進行修改程式碼後的圖如下:
關於bitbucket和sourceTree的具體用法,請自行搜尋學習。