git實(shí)用知識(shí)梳理(一)最基礎(chǔ)的知識(shí)

一般我們寫(xiě)代碼會(huì)用到版本控制工具安拟,那么git就是免費(fèi)開(kāi)源的工具之一馆截,同時(shí)也是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)(沒(méi)有之一)。因此硼砰,它的功能也是十分強(qiáng)大的了且蓬!當(dāng)然了,精通git是很難的题翰,大多數(shù)人也沒(méi)有必要恶阴。

因此,本系列文就對(duì)常用的git知識(shí)進(jìn)行梳理遍愿,保證實(shí)用存淫!

這一篇主要內(nèi)容如下:

  1. 創(chuàng)建版本庫(kù)、添加文件到版本庫(kù)沼填、掌握倉(cāng)庫(kù)和文件狀態(tài)
  2. 版本回退
  3. 工作區(qū)和暫存區(qū)桅咆、管理修改

Git超級(jí)實(shí)用命令

創(chuàng)建版本庫(kù) git init

新建一個(gè)空目錄,并使用這個(gè)命令坞笙,就可以變成git可以管理的倉(cāng)庫(kù)岩饼,例如:

$ mkdir mygit
$ cd mygit
$ git init
Initialized empty Git repository in /Users/cynthia/mygit/.git/

建好了,然后.git目錄是用來(lái)跟蹤管理版本庫(kù)的薛夜,不要手動(dòng)修改就對(duì)了籍茧!

把文件添加到版本庫(kù) git add / git commit

假設(shè)我們新建了一個(gè)README.md文件在上面新建的mygit目錄下。

$ git add README.md
$ git commit -m "readme file"

其中梯澜,git add是把文件添加到倉(cāng)庫(kù)寞冯,git commit則是把文件提交到倉(cāng)庫(kù)。 -m 后面的那段則是提交說(shuō)明。

掌握倉(cāng)庫(kù)和文件狀態(tài) git status / git diff

git status 查看倉(cāng)庫(kù)當(dāng)前的狀態(tài)吮龄。比如你曾經(jīng)添加了一些文件到倉(cāng)庫(kù)俭茧,但是不記得添加了哪些了,使用這個(gè)命令就可以很清楚的看到漓帚。

git diff 用git status發(fā)現(xiàn)有文件被修改過(guò)母债。但是你又不記得對(duì)文件進(jìn)行了怎樣的修改,就可以使用這個(gè)命令尝抖,查看區(qū)別毡们。

$ git diff README.md

版本回退 git log / git reset / git relog

首先,使用git log查看最近提交了哪些版本昧辽。

$ git log
commit 08fea1512175c0033a03d3261499f64251ce19b1 (HEAD -> master)
Author: cynthia <xx@qq.com>
Date:   Thu Jan 17 12:24:54 2019 +0800

    修改說(shuō)明文件

commit eec68512d9e5a0ac9e9c5f07a907db57a334cfa4 (origin/master, origin/HEAD)
Author: cynthia <xx@qq.com>
Date:   Mon Jan 14 12:06:52 2019 +0800

    增加說(shuō)明文件

當(dāng)然衙熔,如果你提交過(guò)很多次的話,一屏肯定顯示不全奴迅,那就按空格或者回車(chē)青责,繼續(xù)查看余下部分。如果想退出這個(gè)界面取具,直接按q鍵就好了脖隶。

如果覺(jué)得信息太多,還可以嘗試加上--pretty=oneline參數(shù)暇检,這樣就會(huì)在一行顯示一個(gè)提交产阱,清爽了很多。

$ git log --pretty=oneline
08fea1512175c0033a03d3261499f64251ce19b1 (HEAD -> master) 修改說(shuō)明文件
eec68512d9e5a0ac9e9c5f07a907db57a334cfa4 (origin/master, origin/HEAD) 增加說(shuō)明文件

類(lèi)似08fea1512...51ce19b1這樣的一長(zhǎng)串就是commit id(版本號(hào))块仆。

HEAD是當(dāng)前版本构蹬,也就是當(dāng)前的最新提交08fea1512...51ce19b1,上一個(gè)版本是HEAD,上上個(gè)版本是HEAD,往上100個(gè)版本則可以寫(xiě)成HEAD~100悔据。

回退到上一個(gè)版本庄敛,使用git reset命令:

$ git reset --hard HEAD^
HEAD is now at eec6851 增加說(shuō)明文件

如果想指定回到某個(gè)版本怎么辦呢?找到它的commit id科汗,當(dāng)然不需要復(fù)制整個(gè)一長(zhǎng)串藻烤,復(fù)制前面幾位就好了(也別太少,一兩位的話可能會(huì)找到多個(gè)版本號(hào)头滔,無(wú)法確定)怖亭。例如commit id是08fea15,使用命令:

$ git reset --hard 08fea15

那么當(dāng)你回退到舊版本之后坤检,還想恢復(fù)到新版本兴猩,此時(shí)用git log又查看不到版本號(hào)怎么辦?此時(shí)就可以使用git reflog查看命令歷史早歇,進(jìn)行找回倾芝。

$ git reflog
eec6851 (HEAD -> master, origin/master, origin/HEAD) HEAD@{0}: reset: moving to HEAD^
08fea15 HEAD@{1}: reset: moving to 08fea1512175c003
eec6851 (HEAD -> master, origin/master, origin/HEAD) HEAD@{2}: reset: moving to HEAD^

工作區(qū)和暫存區(qū)

剛學(xué)git的時(shí)候讨勤,我并不清楚有這個(gè)概念,所以經(jīng)常很難理解一些操作蛀醉。所以這次就帶你來(lái)了解一下它們吧悬襟,可以更好地理解git哦衅码!

工作區(qū)就是電腦里看到的目錄啦拯刁。

另外,我們使用git init的時(shí)候有自動(dòng)生成一個(gè).git目錄逝段,這個(gè)是git的版本庫(kù)垛玻,并不算是工作區(qū)。

版本庫(kù)里存了很多東西奶躯,其中最重要的有stage和git自動(dòng)創(chuàng)建的第一個(gè)分支master帚桩,以及指向master的指針HEAD.

stage就是暫存區(qū)。

當(dāng)我們使用git add添加文件的時(shí)候嘹黔,就是添加到暫存區(qū)账嚎。

使用git commit提交更改的時(shí)候,就是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支儡蔓。

當(dāng)我們使用的時(shí)候郭蕉,是不是會(huì)在git add好幾次之后才會(huì)做一次git commit呀?此時(shí)喂江,需要提交的文件召锈,會(huì)通過(guò)git add放到暫存區(qū),然后在git commit的時(shí)候获询,一次性提交暫存區(qū)的所有修改涨岁。

撤銷(xiāo)修改 git checkout -- filename / git reset HEAD filename

正寫(xiě)著代碼呢,小貓跑過(guò)來(lái)啪啪啪幫忙寫(xiě)了幾爪子吉嚣,然后順手還幫你保存了梢薪。你很感激貓主子的“好意”,不過(guò)你還是想恢復(fù)到之前的模樣尝哆。

怎么辦呢秉撇?用眼睛一處處檢查,然后改回來(lái)么较解?那萬(wàn)一整個(gè)文件都給你刪了呢畜疾?

不用慌,此時(shí)使用git checkout -- filename撤銷(xiāo)修改就好啦印衔!之后啡捶,這個(gè)文件就會(huì)回到最近一次git commit或git add時(shí)的狀態(tài)。

git checkout其實(shí)是用版本庫(kù)里的版本替換工作區(qū)的版本奸焙,無(wú)論工作區(qū)是修改還是刪除瞎暑,都可以“一鍵還原”彤敛。

那么,萬(wàn)一你離開(kāi)電腦的時(shí)候了赌,小貓幫你寫(xiě)了一堆代碼墨榄,你回來(lái)之后直接使用git add添加到了暫存區(qū)怎么辦?

使用git reset HEAD filename就可以把暫存區(qū)的修改撤銷(xiāo)掉勿她,重新放回工作區(qū)
了袄秩!

假如你不僅add了,還commit了怎么辦逢并?參考上面版本回退部分的相關(guān)命令之剧,就好了。

刪除文件 git rm

git實(shí)用知識(shí)梳理(二)分支管理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末砍聊,一起剝皮案震驚了整個(gè)濱河市背稼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌玻蝌,老刑警劉巖蟹肘,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異俯树,居然都是意外死亡帘腹,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)聘萨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)竹椒,“玉大人,你說(shuō)我怎么就攤上這事米辐⌒赝辏” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵翘贮,是天一觀的道長(zhǎng)赊窥。 經(jīng)常有香客問(wèn)我,道長(zhǎng)狸页,這世上最難降的妖魔是什么锨能? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮芍耘,結(jié)果婚禮上址遇,老公的妹妹穿的比我還像新娘。我一直安慰自己斋竞,他們只是感情好倔约,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著坝初,像睡著了一般浸剩。 火紅的嫁衣襯著肌膚如雪钾军。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天绢要,我揣著相機(jī)與錄音吏恭,去河邊找鬼。 笑死重罪,一個(gè)胖子當(dāng)著我的面吹牛樱哼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蛆封,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼唇礁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了惨篱?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤围俘,失蹤者是張志新(化名)和其女友劉穎砸讳,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體界牡,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡簿寂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宿亡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片常遂。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖挽荠,靈堂內(nèi)的尸體忽然破棺而出克胳,到底是詐尸還是另有隱情,我是刑警寧澤圈匆,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布漠另,位于F島的核電站,受9級(jí)特大地震影響跃赚,放射性物質(zhì)發(fā)生泄漏笆搓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一纬傲、第九天 我趴在偏房一處隱蔽的房頂上張望满败。 院中可真熱鬧,春花似錦叹括、人聲如沸算墨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)米同。三九已至骇扇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間面粮,已是汗流浹背少孝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留熬苍,地道東北人稍走。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像柴底,于是被迫代替她去往敵國(guó)和親婿脸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照柄驻,而是把代碼倉(cāng)庫(kù)完整的鏡像下來(lái)狐树。這樣一來(lái),任何一處協(xié)同...
    __silhouette閱讀 15,855評(píng)論 5 147
  • Git 命令行學(xué)習(xí)筆記 Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照鸿脓,而是把代碼倉(cāng)庫(kù)完整的鏡像下來(lái)...
    sunnyghx閱讀 3,905評(píng)論 0 11
  • Git常用語(yǔ)法 [TOC] Git簡(jiǎn)介 描述 ? Git(讀音為/g?t/抑钟。)是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),...
    君惜丶閱讀 3,497評(píng)論 0 13
  • 愛(ài)他美(Aptamil)奶粉不僅是德國(guó)第一品牌的奶粉野哭,也是歐洲銷(xiāo)量最好的奶粉之一在塔。它的受歡迎度主要來(lái)源于和其它品牌...
    西西的書(shū)屋閱讀 427評(píng)論 1 0
  • 最近開(kāi)始寫(xiě)作蛔溃,但寫(xiě)了一段時(shí)間,寫(xiě)作的素材及靈感突然變的匱乏起來(lái)篱蝇,于是就開(kāi)始翻關(guān)于寫(xiě)作的書(shū)籍贺待、課程,同時(shí)聽(tīng)了兩個(gè)公眾...
    時(shí)間的朋友_2d38閱讀 240評(píng)論 0 2