git使用詳解 terminal命令/sourceTree/Xcode

說到Git,必須要先談一下版本控制。什么是版本控制?我為什么要關心它呢?版本控制是一種記錄一個或若干文件內容變化,以便將來查閱特定版本修訂情況的系統。
版本控制的類型大致可以分為三大類:
本地版本控制系統

其中最流行的一種叫做 rcs,它的工作原理基本上就是保存并管理文件補?。╬atch)。文件補丁是一種特定格式的文本文件,記錄著對應文件修訂前后的內容變化。所以,根據每次修訂后的補丁,rcs可以通過不斷打補丁,計算出各個版本的文件內容。

集中化版本控制系統
為了讓在不同系統上的開發(fā)者協同工作,集中化的版本控制系統( Centralized Version Control Systems,簡稱 CVCS)應運而生。這類系統,諸如CVS,Subversion以及 Perforce等,都有一個單一的集中管理的服務器,保存所有文件的修訂版本,而協同工作的人們都通過客戶端連到這臺服務器,取出最新的文件或者提交更新。多年以來,這已成為版本控制系統的標準做法。然而,事分兩面,有好有壞。這么做最顯而易見的缺點是中央服務器的單點故障。如果宕機一小時,那么在這一小時內,誰都無法提交更新,也就無法協同工作。要是中央服務器的磁盤發(fā)生故障,碰巧沒做備份,或者備份不夠及時,就會有丟失數據的風險。最壞的情況是徹底丟失整個項目的所有歷史更改記錄,而被客戶端偶然提取出來的保存在本地的某些快照數據就成了恢復數據的希望。但這樣的話依然是個問題,你不能保證所有的數據都已經有人事先完整提取出來過。本地版本控制系統也存在類似問題,只要整個項目的歷史記錄被保存在單一位置,就有丟失所有歷史更新記錄的風險。

分布式版本控制系統

分布式版本控制系統( Distributed Version Control System,簡稱 DVCS),在這類系統中,像 Git,Mercurial,Bazaar以及 Darcs等,客戶端并不只提取最新版本的文件快照,而是把代碼倉庫完整地鏡像下來。這么一來,任何一處協同工作用的服務器發(fā)生故障,事后都可以用任何一個鏡像出來的本地倉庫恢復。因為每一次的提取操作,實際上都是一次對代碼倉庫的完整備份。

版本控制的類別說完了,那么為什么要如此重視git呢?基于其分布式版本控制的優(yōu)點和工作(創(chuàng)建和切換分支等)的高效性,git已經越來越流行,在國內的IT開發(fā)中也會慢慢取代SVN的。當然取代只是博主個人觀點,so,上干活。

git 的命令行的使用

1、git的初始化首先在桌面上創(chuàng)建gitTest文件夾,然后創(chuàng)建ios項目并保存到gitTest文件夾下。當然,這里講的是git的初始化,所以在創(chuàng)建工程的時候不要勾選創(chuàng)建git倉庫選項,如下圖:


由于mac系統是自帶git的,所以git的命令在mac是直接可以使用的。
首先打開終端看一下本機的git版本:$ git version


對于一個沒有進行版本控制的工程進行初始化(這里是對gitTest文件進行初始化)
(1)進入目錄
(2)初始化倉庫 $ git init
(3)添加文件到倉庫的暫存區(qū)中 $ git add .(添加所有文件到暫存區(qū))
(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 //查看文件的狀態(tài)
$ git diff //查看未加入暫存區(qū)的修改的文件內容
$ git diff --cached //查看已經加入暫存區(qū)的修改的文件內容
$ git log //查看提交的記錄
$ git reset //撤銷修改

2、git status實例如下圖:
說明:凡是有改動但沒有加入到暫存區(qū)的文件都顯示在Changes not staged for commit:下;凡是加入到暫存區(qū)沒有提交的文件都在Changes to be commit:下。
注意:提交的時候,git只會把暫存區(qū)中的文件提交到倉庫中;所以提交的時候一定要看清楚文件的狀態(tài);


3、git diff 實例如下:
說明:由下圖可以看出在文件中增加了look diff,然后用git diff 命令可以看出未加入暫存區(qū)的文件的修改;用git diff --cached查看加入暫存區(qū)的文件修改;當采用 git add . 把所有文件都加入到暫存區(qū)后使用 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
回退工作區(qū)的修改 (本地源碼會改變)
git checkout -- filename 撤銷工作區(qū)的修改(即沒有add之前修改)
回退到沒有任何修改之前和服務器一樣
git reset --hard origin/master //將本地版本回退到和遠程服務器一樣

6、git 分支
幾乎每一種版本控制系統都以某種形式支持分支,而git的分支可以說是git的必殺技(速度快,操作簡單)。使用分支意味著你可以從開發(fā)主線上分離開來,然后在不影響主線的同時繼續(xù)工作。
命令如下:
<1>、創(chuàng)建新的分支 $ 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>創(chuàng)建標簽 $ git tag -a 標簽名 -m ‘注釋’
<2> 切換標簽 $ git checkout 標簽名
<3> 刪除標簽 $ git tag -d 標簽名
<4> 查看所有標簽 $ git tag

8、遠程倉庫操作
至此,git本地的版本控制用到的命令基本上都有了。接下來來看一下git本地倉庫和遠程倉庫的結合使用。這里使用https://bitbucket.org倉庫托管網站。登錄此網站后先注冊用戶,注冊完用戶后就可以獲得免費的私人倉庫,此倉庫可以允許最多5個人一起共享開發(fā)。具體使用方法,這里就不多說了。開始上干貨。
在bitbucket網站創(chuàng)建倉庫gitTest,創(chuàng)建完成后如下圖:


點擊倉庫進入后,會有提示如下圖:

現在本地已經有了一個倉庫,接下來采用上圖中的第二種方法把本地倉庫推送到bitbucket上



執(zhí)行完以下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的具體用法,請自行搜索學習。

注明:轉載自 Nick的專欄 http://blog.csdn.net/xiaonaiping061/article/details/49685675

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容