Git使用大全

工作原理
工作區(qū):倉(cāng)庫(kù)文件夾里除.git目錄以外的
版本庫(kù):.git目錄,用于存儲(chǔ)版本信息
<ul>
<li>暫緩區(qū)(stage)</li>
<li>分支(master):git自動(dòng)創(chuàng)建的第一個(gè)分支</li>
<li>HEAD指針:用于指向當(dāng)前分支</li>

</ul>
git add :吧文件修改或者添加的文件添加到暫緩區(qū)
git commit:吧暫緩區(qū)的所有內(nèi)容提交到當(dāng)前分支

1.初始化一個(gè)代碼倉(cāng)庫(kù)
git init
2.如果使用git,必須配置用戶名和郵箱,給當(dāng)前的git倉(cāng)庫(kù)配置用戶名和郵箱
<ul>
<li>git config user.name "用戶名"</li>
<li>git config user.email "郵箱"</li>

</ul>
配置全局的用戶名和郵箱
git config --global user.name "用戶名"
git config --global user.email "郵箱"

3.初始化項(xiàng)目
touch main.m 創(chuàng)建了main.m
git add main.m 將文件添加暫緩區(qū)
git commit -m初始化項(xiàng)目:將在緩存區(qū)的所有內(nèi)容提交到本地版本庫(kù),清空暫緩區(qū)
git add. 將在工作區(qū)所有不在暫緩區(qū)的所有內(nèi)容添加到暫緩區(qū)

注意:添加的文件或者修改的文件都要通過(guò)add命令添加到暫緩區(qū).

4.查看文件狀態(tài)
git status
紅色:該文件被添加或者被修改,但是沒(méi)有添加到git的暫緩區(qū)
綠色:該文件在暫緩區(qū),但是沒(méi)有提交到本地版本庫(kù)

5.給命令行起別名
git config alias.別名 "原名"
git config alias.st "status"
git config --global alias.st "status"

6.刪除文件
git rm person.m 將person刪除

7.查看版本信息
git log->版本號(hào)是有sha1算法生成的40位哈希值
git reflog可以查看所有版本回退的操作
8.版本回退
git reset --hard HEAD:回到當(dāng)前版本
git reset --hard HEAD^:回到上一個(gè)版本
git reset --hard HEAD-100:回到前一百個(gè)版本
git reset --hard 版本號(hào)(前5位)

二.共享版本庫(kù)
<ul>
<li>git服務(wù)器搭建非常繁瑣</li>
<li>可以把代碼托管到github/OSChina上</li>
<li>一個(gè)文件夾/U盤</li>
</ul>

1.一個(gè)文件夾作為版本庫(kù)
git init --bare
2.將共享版本庫(kù)的所有內(nèi)容下載到本地
git clone 共享版本庫(kù)地址
3.忽略文件
touch .gitignore
具體忽略上github上面找

版本回退 多人操作時(shí) 可以采用雙方都回退的方法.
git reset --hard HEAD^
git push -f

版本備份

  1. 1.0版本開(kāi)發(fā)完畢,將1.0版本上傳到AppStore,對(duì)1.0版本進(jìn)行備份(打上標(biāo)簽)
    git tag -a weibo1.0 -m "這是1.0版本"
    查看tag git tag
    2.需要將標(biāo)簽push到共享版本庫(kù)
    git push origin weibo1.0
    3.開(kāi)始2.0版本的開(kāi)發(fā)
    4.發(fā)現(xiàn)1.0版本有bug,在經(jīng)理的文件夾下創(chuàng)建一個(gè)文件夾,用于修復(fù)bug,將共享版本庫(kù)所有內(nèi)容clone
    5.將當(dāng)前的代碼轉(zhuǎn)為1.0標(biāo)簽,創(chuàng)建分支,并切換到該分支
    git checkout weibo1.0
    git checkout -b weibo1.1 fixbug:創(chuàng)建分支,并切換到該分支
    6.在分支中修復(fù)bug,將修復(fù)好的版本打上tag,并上傳到共享版本庫(kù)
    同上
    7.跟當(dāng)前正在開(kāi)發(fā)的2.0版本進(jìn)行合并
    source Controller ->pull->weibo1.1
    8.刪除分支
    git branch 查看當(dāng)前在哪個(gè)分支
    git branch -r查看本地版本庫(kù)的分支
    git checkout master 切換分支master
    git branch -d weibo1.1fixbug:刪除本地的分支
    git branch -r -d origin/weibo1.1fixbug:刪除本地版本庫(kù)分支
    git push origin --delete weibo1.1fixbug

演示團(tuán)隊(duì)多人開(kāi)發(fā)
以下列舉三個(gè)角色來(lái)進(jìn)行演示多人開(kāi)發(fā).分別為項(xiàng)目經(jīng)理Manager
,程序猿一CoderOne
,程序猿二CoderTwo
.

1.創(chuàng)建文件夾Manager
,CoderOne
,CoderTwo
.

2.項(xiàng)目經(jīng)理搭建項(xiàng)目結(jié)構(gòu)
2.1 項(xiàng)目經(jīng)理從共享庫(kù)clone項(xiàng)目到本地

命令: git clone /Users/liwx/Desktop/Tmp/Git/TeamServer

2.2 項(xiàng)目經(jīng)理搭建好項(xiàng)目結(jié)構(gòu),使用push
,提交到共享庫(kù).
1.進(jìn)入項(xiàng)目經(jīng)理的Manager/TeamServer文件夾下創(chuàng)建iOS,Android,Server文件夾
命令: mkdir iOS Android Server

2.項(xiàng)目經(jīng)理進(jìn)入iOS文件夾內(nèi)創(chuàng)建main.m,并提交到共享庫(kù)
1:touch main.m
2: git add .
3: git commit -m "創(chuàng)建main.m文件"
4: git push

3.CoderOne和CoderTwo分別clone下載TeamServer倉(cāng)庫(kù)到各自的文件夾
命令: git clone /Users/liwx/Desktop/Tmp/Git/TeamServer

4.演練CoderOne新增文件CoderTwo更新
4.1 CoderOne新增文件,并提交共享庫(kù)
<pre>1: touch Person.h
2: git add .
3: git commit -m "創(chuàng)建Person.h文件"
4: git push</pre>
4.2 CoderTwo更新倉(cāng)庫(kù)
git pull
5.CoderOne刪除文件,CoderTwo同步更新
5.1 CoderOne新增文件,并提交共享庫(kù)
<pre>git rm Person.h
2: git commit -m "刪除Person.h文件"
3: git push</pre>

5.2 CoderTwo更新倉(cāng)庫(kù)
git pull

6.超時(shí)和沖突演練,CoderOne和CoderTwo同時(shí)修改main.m第一行內(nèi)容
6.1 CoderOne先修改完提交到共享庫(kù)
<pre>1: git add .
2: git commit -m "CoderOne修改了main.m第一行內(nèi)容"
3: git push</pre>

6.2 CoderTwo后修改完提交到共享庫(kù),執(zhí)行到第3步此時(shí)會(huì)提示文件過(guò)期(超時(shí))fetch first

<pre>1: git add .
2: git commit -m "CoderTwo修改了main.m第一行內(nèi)容"
3: git push</pre>

6.3 CoderTwo執(zhí)行g(shù)it pull更新時(shí),產(chǎn)生沖突
git pull

main.m沖突內(nèi)容

<<<<<<< HEAD// CoderTwo修改了main.m第一行內(nèi)容=======// CoderOne修改main.m文件>>>>>>> 081af32dbb358ba0470ae0ff996987b050037027

修改main.m沖突后
// CoderTwo修改了main.m第一行內(nèi)容// CoderOne修改main.m文件

6.4 CoderTwo解決沖突后提交到共享庫(kù)
<pre>1: git add .
2: git commit -m "解決main.m沖突"
3: git push</pre>

Git補(bǔ)充

關(guān)于忽略文件

在真實(shí)開(kāi)發(fā)中,配置.gitignore文件 频敛, 去github里面搜索gitignore選擇Objective-C.gitignore版本的斧吐,拷貝到本地倉(cāng)庫(kù)即可,記得添加到本地版本庫(kù)

常見(jiàn)問(wèn)題

fetch first 代表當(dāng)前文件過(guò)期
,需要從遠(yuǎn)程共享庫(kù)更新命令: git pull

4.Git常用命令
4.1 查看清钥、添加、提交淋样、刪除厌漂、找回谒府,重置修改文件

<pre>查看:git show
顯示某次提交的內(nèi)容: git show $id
添加: git add <file>
將工作文件修改提交到本地暫存區(qū):git add .
將所有修改過(guò)的工作文件提交暫存區(qū)刪除 :git rm <file>
從版本庫(kù)中刪除文件:git rm <file> --cached
重置 git reset <file>
從暫存區(qū)恢復(fù)到工作文件:git reset -- .
從暫存區(qū)恢復(fù)到工作文件:git reset --hard
恢復(fù)最近一次提交過(guò)的狀態(tài)艇纺,即放棄上次提交后的所有本次修改恢復(fù) git revert <$id>
</pre>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市媚污,隨后出現(xiàn)的幾起案子舀瓢,更是在濱河造成了極大的恐慌,老刑警劉巖耗美,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件京髓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡商架,警方通過(guò)查閱死者的電腦和手機(jī)堰怨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蛇摸,“玉大人备图,你說(shuō)我怎么就攤上這事』市停” “怎么了诬烹?”我有些...
    開(kāi)封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)弃鸦。 經(jīng)常有香客問(wèn)我绞吁,道長(zhǎng),這世上最難降的妖魔是什么唬格? 我笑而不...
    開(kāi)封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任家破,我火速辦了婚禮,結(jié)果婚禮上购岗,老公的妹妹穿的比我還像新娘汰聋。我一直安慰自己,他們只是感情好喊积,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布烹困。 她就那樣靜靜地躺著,像睡著了一般乾吻。 火紅的嫁衣襯著肌膚如雪髓梅。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天绎签,我揣著相機(jī)與錄音枯饿,去河邊找鬼。 笑死诡必,一個(gè)胖子當(dāng)著我的面吹牛奢方,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蟋字,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼稿蹲!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起愉老,我...
    開(kāi)封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤场绿,失蹤者是張志新(化名)和其女友劉穎剖效,沒(méi)想到半個(gè)月后嫉入,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡璧尸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年咒林,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片爷光。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡垫竞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛀序,到底是詐尸還是另有隱情欢瞪,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布徐裸,位于F島的核電站遣鼓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏重贺。R本人自食惡果不足惜骑祟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望气笙。 院中可真熱鬧次企,春花似錦、人聲如沸潜圃。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谭期。三九已至堵第,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間崇堵,已是汗流浹背型诚。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鸳劳,地道東北人狰贯。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親涵紊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子傍妒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

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

  • @(〓〓 iOS-實(shí)用技術(shù))[代碼管理 Git/SVN] 作者: Liwx 郵箱: 1032282633@qq....
    Liwx閱讀 2,756評(píng)論 1 13
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,645評(píng)論 9 163
  • 在社會(huì)的洪流中,我終于把自己弄丟了
    FCZF12345閱讀 203評(píng)論 0 0
  • 人群熱鬧如羔羊碰撞的犄角 我躺在羊毛上稍
    寶彥閱讀 382評(píng)論 0 0
  • 剛醒摸柄,得知恐怖分子昨晚用自殺爆炸襲擊城市中心音樂(lè)會(huì)颤练,造成22人死亡(一說(shuō)19人),59人受傷驱负。 懦夫炸我城 殺我二...
    yangxian_阿泱閱讀 188評(píng)論 16 26