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

說到Git馁痴,必須要先談一下版本控制谊娇。什么是版本控制?我為什么要關(guān)心它呢罗晕?版本控制是一種記錄一個或若干文件內(nèi)容變化济欢,以便將來查閱特定版本修訂情況的系統(tǒng)赠堵。
版本控制的類型大致可以分為三大類:
本地版本控制系統(tǒng)

其中最流行的一種叫做 rcs,它的工作原理基本上就是保存并管理文件補斗ㄈ臁(patch)茫叭。文件補丁是一種特定格式的文本文件,記錄著對應(yīng)文件修訂前后的內(nèi)容變化挖胃。所以杂靶,根據(jù)每次修訂后的補丁,rcs可以通過不斷打補丁酱鸭,計算出各個版本的文件內(nèi)容吗垮。

集中化版本控制系統(tǒng)
為了讓在不同系統(tǒng)上的開發(fā)者協(xié)同工作,集中化的版本控制系統(tǒng)( Centralized Version Control Systems凹髓,簡稱 CVCS)應(yīng)運而生烁登。這類系統(tǒng),諸如CVS蔚舀,Subversion以及 Perforce等饵沧,都有一個單一的集中管理的服務(wù)器,保存所有文件的修訂版本赌躺,而協(xié)同工作的人們都通過客戶端連到這臺服務(wù)器狼牺,取出最新的文件或者提交更新。多年以來礼患,這已成為版本控制系統(tǒng)的標(biāo)準(zhǔn)做法是钥。然而,事分兩面缅叠,有好有壞悄泥。這么做最顯而易見的缺點是中央服務(wù)器的單點故障。如果宕機一小時肤粱,那么在這一小時內(nèi)弹囚,誰都無法提交更新,也就無法協(xié)同工作领曼。要是中央服務(wù)器的磁盤發(fā)生故障鸥鹉,碰巧沒做備份,或者備份不夠及時悯森,就會有丟失數(shù)據(jù)的風(fēng)險宋舷。最壞的情況是徹底丟失整個項目的所有歷史更改記錄,而被客戶端偶然提取出來的保存在本地的某些快照數(shù)據(jù)就成了恢復(fù)數(shù)據(jù)的希望瓢姻。但這樣的話依然是個問題祝蝠,你不能保證所有的數(shù)據(jù)都已經(jīng)有人事先完整提取出來過。本地版本控制系統(tǒng)也存在類似問題,只要整個項目的歷史記錄被保存在單一位置绎狭,就有丟失所有歷史更新記錄的風(fēng)險细溅。

分布式版本控制系統(tǒng)

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

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

git 的命令行的使用

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


由于mac系統(tǒng)是自帶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 //徹底關(guān)掉Finder
注意:os 10.10之前不用使用killall Finder讼撒,只要關(guān)掉Finder再重新打開就能看到效果,os 10.11需要killall Finder才能看到效果
截圖如下:


至此已經(jīng)把項目加入到了本地的倉庫中,即git初始化完成根盒。在對文件進行修改的過程中還會使用到一下git 命令:
$ git status //查看文件的狀態(tài)
$ git diff //查看未加入暫存區(qū)的修改的文件內(nèi)容
$ git diff --cached //查看已經(jīng)加入暫存區(qū)的修改的文件內(nèi)容
$ 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ū)的文件修改牡属;當(dāng)采用 git add . 把所有文件都加入到暫存區(qū)后使用 git diff是查看不到任何修改的。


4柜砾、git log實例如下:
說明:git log 會根據(jù)提交時間列出所有提交的記錄湃望;git log -2 會列出最近兩次的提交記錄;git log -p -2 會詳細(xì)的列出最近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之前修改)
回退到?jīng)]有任何修改之前和服務(wù)器一樣
git reset --hard origin/master //將本地版本回退到和遠(yuǎn)程服務(wù)器一樣

6、git 分支
幾乎每一種版本控制系統(tǒng)都以某種形式支持分支担映,而git的分支可以說是git的必殺技(速度快废士,操作簡單)。使用分支意味著你可以從開發(fā)主線上分離開來蝇完,然后在不影響主線的同時繼續(xù)工作官硝。
命令如下:
<1>、創(chuàng)建新的分支 $ git branch 分支名
<2>短蜕、切換分支 $ git checkout 分支名
注意1和2可以合成一個命令來完成: $ git checkout -b 分支名
<3>氢架、合并分支 (即把其他分支和當(dāng)前分支合并在一起)
(1)切換到要合并到的分支 $ git checkout 分支名
(2) 進行合并 $ git merge 分支名
<4>、刪除分支 $ git branch -d 分支名
<5>朋魔、查看所有分支 $ git branch

7岖研、git添加標(biāo)簽
<1>創(chuàng)建標(biāo)簽 $ git tag -a 標(biāo)簽名 -m ‘注釋’
<2> 切換標(biāo)簽 $ git checkout 標(biāo)簽名
<3> 刪除標(biāo)簽 $ git tag -d 標(biāo)簽名
<4> 查看所有標(biāo)簽 $ git tag

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


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

現(xiàn)在本地已經(jīng)有了一個倉庫莹菱,接下來采用上圖中的第二種方法把本地倉庫推送到bitbucket上



執(zhí)行完以下git命令之后如上圖,推送本地倉庫到遠(yuǎn)程倉庫成功
<1>吱瘩、$ git remote add origin 遠(yuǎn)程倉庫路徑
<2>道伟、$ git push -u origin --all 提交所有的文件
從現(xiàn)在開始,如果改變了本地代碼并且要提交到遠(yuǎn)程服務(wù)器上就要進行以下三步:
<1> commit 提交本地代碼
<2>$ git pull 拉取服務(wù)器上的最新代碼
<3>$ git push 提交到遠(yuǎn)程服務(wù)器

接下來來看一下使碾,本地沒有倉庫蜜徽,需要從遠(yuǎn)程倉庫上clone一份的情況
克隆的命令如下:

<1> git clone 遠(yuǎn)程倉庫地址 --------------------直接克隆倉庫到本地,并且本地文件夾的名字和遠(yuǎn)程倉庫的名字一樣
<2> git clone 遠(yuǎn)程倉庫地址 本地文件夾名字 --------------------直接克隆倉庫到本地票摇,并且本地文件夾的名字和遠(yuǎn)程倉庫的名字不一樣

從已有倉庫中獲取干凈的代碼
//獲取干凈的代碼
git archive --format zip --output /Users/Nick/Desktop/git/output.zip master -0

Xcode git版本控制
Xcode 中的操作如下圖所示:



sourceTree 進行代碼的控制
sourceTree是git倉庫的客戶端拘鞋,可以在appSotre中或去官方網(wǎng)站下載。
1矢门、添加新的倉庫



添加成功后如下圖所示:

2盆色、打開后并進行修改代碼后的圖如下:

關(guān)于bitbucket和sourceTree的具體用法,請自行搜索學(xué)習(xí)祟剔。

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末隔躲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子物延,更是在濱河造成了極大的恐慌宣旱,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叛薯,死亡現(xiàn)場離奇詭異浑吟,居然都是意外死亡,警方通過查閱死者的電腦和手機耗溜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門组力,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抖拴,你說我怎么就攤上這事忿项。” “怎么了城舞?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長寞酿。 經(jīng)常有香客問我家夺,道長,這世上最難降的妖魔是什么伐弹? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任拉馋,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘煌茴。我一直安慰自己随闺,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布蔓腐。 她就那樣靜靜地躺著矩乐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪回论。 梳的紋絲不亂的頭發(fā)上散罕,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機與錄音傀蓉,去河邊找鬼欧漱。 笑死,一個胖子當(dāng)著我的面吹牛葬燎,可吹牛的內(nèi)容都是我干的误甚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谱净,長吁一口氣:“原來是場噩夢啊……” “哼窑邦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起岳遥,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤奕翔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后浩蓉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體派继,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年捻艳,在試婚紗的時候發(fā)現(xiàn)自己被綠了驾窟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡认轨,死狀恐怖绅络,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嘁字,我是刑警寧澤恩急,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站纪蜒,受9級特大地震影響衷恭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纯续,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一随珠、第九天 我趴在偏房一處隱蔽的房頂上張望灭袁。 院中可真熱鬧,春花似錦窗看、人聲如沸茸歧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽软瞎。三九已至,卻和暖如春构罗,著一層夾襖步出監(jiān)牢的瞬間铜涉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工遂唧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芙代,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓盖彭,卻偏偏與公主長得像纹烹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子召边,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容