Git大法好——2.Git本地操作指令詳解

Git大法好——2.Git本地操作指令詳解

標(biāo)簽: Git


引言

上節(jié)給大家講解了有關(guān)于Git的一些概念榨咐,Git的引入介却,Git的四個(gè)組成部分,Git文件的狀態(tài)块茁,以及
Git的下載安裝齿坷;前面也講過(guò)Git和SVN有個(gè)明顯的差別就是,Git可以不需要網(wǎng)絡(luò)就可以進(jìn)行版本
控制数焊,這是因?yàn)镚it中每個(gè)電腦都擁有一個(gè)本地的版本庫(kù)永淌,而遠(yuǎn)程的倉(cāng)庫(kù)僅僅是作為我們交換修改
的一個(gè)工具!即使失去這個(gè)工具佩耳,我們也可以干活遂蛀,只是交換修改不方便罷了,假如是SVN干厚,遠(yuǎn)程
服務(wù)器掛了...所以李滴,我們使用Git的時(shí)候大部分時(shí)間都是在進(jìn)行Git的一些本地操作,當(dāng)然還有
遠(yuǎn)程服務(wù)器分支合并的一些問(wèn)題等蛮瞄,本節(jié)我們就先來(lái)熟悉一波本地操作的一些常用指令所坯!本節(jié)
講解的內(nèi)容概要如下:

  • 1.設(shè)置您的身份信息(git config)
  • 2.獲取幫助(git help)
  • 3.創(chuàng)建本地的代碼倉(cāng)庫(kù)(git init)
  • 4.將文件放入暫存區(qū)(git add)
  • 5.將暫存區(qū)的內(nèi)容提交到本地倉(cāng)庫(kù)(git commit)
  • 6.查看當(dāng)前工作區(qū)與暫存區(qū)的狀態(tài)(git status)
  • 7.查看工作區(qū)與暫存區(qū)的差異(git diff)
  • 8.查看提交更改的記錄(git log)
  • 9.文件恢復(fù)——未add(git checkout)
  • 10.文件恢復(fù)——已a(bǔ)dd未commit(git reset)
  • 11.文件恢復(fù)(已commit)——版本回退(git reset HEAD^)
  • 12.查看輸入的每一條指令(git reflog)
  • 13.Git命令別名(git config --xxx alias.xxx xxx)
  • 14.Git命令的自動(dòng)補(bǔ)全(按兩次Tab鍵)

好的,開始本節(jié)內(nèi)容(要先安裝好Git哦挂捅!)~


1.設(shè)置您的身份信息

安裝完Git芹助,我們第一件要做的事情是先配置我們的身份信息,作為自己參與團(tuán)隊(duì)協(xié)作的
一個(gè)身份標(biāo)記闲先,比如誰(shuí)對(duì)某個(gè)文件進(jìn)行了修改状土,鍵入下述命令:

git config --global user.name "coder-pig"
git config --global user.email "779878443@qq.com"

配置完后,把""部分信息去掉伺糠,輸多一次上面的指令蒙谓,可以看到是否配置成功

也可以鍵入下述指令來(lái)查看所有的Git設(shè)置:

git config --list

另外,上面設(shè)置的配置信息是全局的退盯,一般我們?cè)诠旧习啾宋冢緟f(xié)作的都是公司
的項(xiàng)目泻肯,這里可以設(shè)置全局的配置渊迁,用global慰照,可能你有自己私人的項(xiàng)目,那么
你可以單獨(dú)的為這個(gè)項(xiàng)目設(shè)置一個(gè)局部的配置琉朽,鍵入下述命令:

git config --local user.name "coder-pig"
git config --local user.email "779878443@qq.com"

僅僅只需要把global改成local即可~此時(shí)這個(gè)倉(cāng)庫(kù)的git配置就不會(huì)和全局的相同毒租,
從而可以避免一些不必要的麻煩!


2.獲取幫助

和其他的命令行一樣箱叁,Git同樣是帶有help指令的墅垮,當(dāng)我們遇到?jīng)]見過(guò),又或者忘記用法的
指令耕漱,我們可以鍵入:

git help init

把init改成你要查詢的那個(gè)指令即可算色!比如git help add

win下會(huì)打開一個(gè)Git的Manual(手冊(cè))的頁(yè)面螟够,可以在之類查看指令的一些用法
而Ubuntu下則會(huì)直接在命令行輸出:

當(dāng)然你也可以到Git官方手冊(cè)中查找對(duì)應(yīng)的指令灾梦!


3.創(chuàng)建本地的代碼倉(cāng)庫(kù)

你可以直接鍵入下述指令創(chuàng)建一個(gè)新的帶Git倉(cāng)庫(kù)的項(xiàng)目:

git init GitForTest

把GitForTest改成你想創(chuàng)建的工程名即可!接著我們可以來(lái)到新創(chuàng)建的工程的
目錄下妓笙,這里需要 修改下讓隱藏文件可見若河,就可以看到.git的文件夾里,里面
東東就是我們git倉(cāng)庫(kù)的東東了寞宫,切記 別隨意去改或者刪除里面的東西萧福!(你也
可以鍵入:ls -ah來(lái)查看隱藏文件)

當(dāng)然假如你已經(jīng)有項(xiàng)目了,想在之前項(xiàng)目的基礎(chǔ)上添加Git倉(cāng)庫(kù)辈赋,那么通

過(guò)命令行或者git bash來(lái)到當(dāng)前工程的文件夾目錄下鲫忍,鍵入下述指令即可
為你的項(xiàng)目添加本地Git倉(cāng)庫(kù):

git init

4.將文件放入暫存區(qū)

前面Git文件狀態(tài)我們講過(guò)假如文件未加入版本控制,那么該文件處于Untracked
(未跟蹤)的狀態(tài)钥屈,我們可以通過(guò)git add指令將文件添加到暫存區(qū)中此時(shí)文件會(huì)變
Tracked(已跟蹤)狀態(tài)饲窿!我們可以使用下面的指令,將文件一個(gè)個(gè)添加到暫存區(qū)中:

git add README.md

假如要添加的文件很多的話焕蹄,這樣一個(gè)個(gè)添加顯得有些麻煩逾雄,我們可以一次性的添加多個(gè):

1)將所有tracked文件中被修改或已刪除的文件信息添加到Git暫存區(qū),不會(huì)處理untracked的文件腻脏!

git add -u

2)將所有tracked文件中被修改或已刪除的文件信息添加到Git倉(cāng)庫(kù)鸦泳,會(huì)把理untracked的文件信息
也加入Git暫存區(qū)

git add -A

3)把當(dāng)前工作區(qū)的所有文件全加入到Git暫存區(qū)

git add .

除了上面三種外,git其實(shí)還為我們提供了交互界面模式永品,我們可以鍵入:

git add -i

上圖的流程是這樣的

1.我先在GitForTest的文件夾里創(chuàng)建了兩個(gè)文件
2.鍵入git add -i做鹰,進(jìn)入后,鍵入4鼎姐,選擇添加untracked的文件
3.他給我們列出了untracked的文件钾麸,然后我們根據(jù)序號(hào)來(lái)添加文件
4.輸入?會(huì)彈出相關(guān)提示更振,然后直接回車,結(jié)束選擇饭尝!
5.然后再次輸入git add -i肯腕,輸入4,可以看到已不存在untacked的文件了钥平!

當(dāng)然還有其他幾個(gè)指令实撒,限于篇幅,有興趣的可以自己研究研究涉瘾!


5.將暫存區(qū)的內(nèi)容提交到本地倉(cāng)庫(kù)

我們可以通過(guò)git commit -m “xxx”指令將暫存區(qū)的內(nèi)容提交到倉(cāng)庫(kù)中

git commit -m "修改了xxx"

后面的-m是對(duì)本次提交的說(shuō)明知态,"xxx"是說(shuō)明內(nèi)容,不該偷懶省去立叛,假如你這里不
輸入负敏,-m "xxx" 的話,也會(huì)讓你進(jìn)入Vi/Vim來(lái)編寫聲明信息的~所以建議還是在這
里進(jìn)行提交內(nèi)容的說(shuō)明吧秘蛇!

另外其做,我們的項(xiàng)目可能存在一些幾百年不變的或者自動(dòng)生成的文件,比如lib彤叉,
gen庶柿,bin文件夾等,我們沒必要每次都把這些都commit秽浇,我們可以在.git同級(jí)
的目錄下創(chuàng)建一個(gè)名為.gitignore的文件浮庐,然后編輯內(nèi)容,把不需要提交的文
件寫上柬焕,那么commit的時(shí)候就會(huì)自動(dòng)忽略這些文件的了~:


6.查看當(dāng)前工作區(qū)與暫存區(qū)的狀態(tài)

我們可以用git status指令來(lái)查看工作區(qū)與暫存區(qū)的當(dāng)前情況审残,比如工作區(qū)有什么
文件和暫存區(qū)的文件 對(duì)比,發(fā)生了改變斑举,要不要add下搅轿?又比如暫存區(qū)里有東西add
了,但是還沒提交等等富玷,直接鍵入下述指令:

git status

比如我這里修改了下README.md文件璧坟,只是改了還沒add:

add文件后:

commit提交暫存區(qū)內(nèi)容

恩,很簡(jiǎn)單赎懦,另外雀鹃,你還可以用下述指令,讓結(jié)果以簡(jiǎn)短的形式輸出~

git status -s

7.查看工作區(qū)與暫存區(qū)的差異

上面我們可以通過(guò)git status獲取當(dāng)前工作區(qū)與緩存區(qū)的狀態(tài)励两,僅僅是狀態(tài)黎茎,
假如我們需要查看發(fā)生改變的內(nèi)容,那么你需要鍵入下述指令:

git diff

這樣就可以看到當(dāng)前的工作區(qū)與暫存區(qū)中對(duì)比当悔,做了哪些修改傅瞻!
PS:上面是我們?cè)赗EADME.md文件里添加了一條語(yǔ)句踢代,然后再鍵入git diff


8.查看提交更改的記錄

還記得之前的網(wǎng)購(gòu)的例子嗎嗅骄,我們可以在我的訂單中找到自己的訂單記錄胳挎,
同樣,在Git中掸读,我們也可以查看所有commit的記錄串远!可以鍵入下述指令:

git log

當(dāng)然宏多,你也可以調(diào)用下述指令獲得更精簡(jiǎn)的結(jié)果

git log --oneline

如果上面還滿足不了你的話儿惫,可以參考:Viewing the Commit History
對(duì)log進(jìn)行定制,比如:


9.文件恢復(fù)——未add

我們可以直接右鍵刪除一個(gè)文件伸但,又或者進(jìn)入命令行肾请,鍵入rm xxx.xxx將文件刪除,
但是刪除的僅僅是 當(dāng)前工作區(qū)里的文件更胖,暫存區(qū)里還是存在著該文件的铛铁,所以此時(shí)
你鍵入git status的話,你會(huì)看到這樣的結(jié)果:

Git告訴你工作區(qū)的文件被刪除了却妨,然后你有兩種選擇:

1)把暫存區(qū)里的文件也刪了饵逐,那么鍵入:

git rm "xxx.xxx"
git commit -m "xxx"

2)誤刪了,將暫存區(qū)的文件恢復(fù)到工作區(qū)彪标,那么可以鍵入:

git checkout -- xxx.xxx

duang倍权!被刪除的文件又回來(lái)了~
當(dāng)然,上面的checkout不止適用于誤刪文件捞烟,當(dāng)你把一個(gè)文件改得面目全非的時(shí)候薄声,
你突然后悔了,但是你已經(jīng)ctrl+s保存了很多次代碼了题画,你可以用用上述指令回到
這個(gè)文件的最初樣子默辨!(前提是你還沒add!)


10.文件恢復(fù)——已a(bǔ)dd未commit

假如你已經(jīng)把文件用git add到了暫存區(qū)苍息,那么此時(shí)你直接用checkout文件是沒有
作用的缩幸!我們需要通過(guò)git reset指令來(lái)廢除此次修改記錄(版本回退),讓當(dāng)前文件
回到上一次提交時(shí)的狀態(tài)竞思!鍵入:

git reset HEAD xxx.xxx

此時(shí)再調(diào)用:

git checkout -- xxx.xxx

文件即可恢復(fù)原樣表谊!


11.文件恢復(fù)(已commit)——版本回退

假如,我們的文件修改已經(jīng)commit了衙四,而你無(wú)端端的又后悔了铃肯,想恢復(fù)成上一次
commit時(shí)的文件,又或者上上次的传蹈,這時(shí)候你可能開始方了押逼,不過(guò)Git為我們提
供了時(shí)光機(jī)(版本回退)步藕,我們可以通過(guò)下述指令回退到上一個(gè)版本:

git reset HEAD^

恩,我們鍵入git log后可以看到版本已經(jīng)回退到上一個(gè)版本了挑格!
如果是上上個(gè)版本咙冗,你只需加多,再上一個(gè)版本繼續(xù)加漂彤,如此類推雾消!
當(dāng)然家浇,除了上面的形式套媚,你還可以根據(jù)版本號(hào)來(lái)回退,比如這里我退到第一個(gè)版本

git reset --hard 8c3f91f

嘿嘿蟋滴,無(wú)壓力媳板,你突然又后悔了桑腮,想回到新的那個(gè)版本,嗯...好吧蛉幸,同樣是上面
的指令:不過(guò)版本號(hào)改成最新那次commit的版本號(hào)就可以了破讨!

git reset --hard cf2d155

12.查看輸入的每一條指令

你可能會(huì)支支吾吾的過(guò)來(lái)對(duì)我說(shuō):"恩,那個(gè)我剛剛把命令行關(guān)了奕纫,那個(gè)最新的版
本號(hào)找不著了提陶,git log也找不到那個(gè)最新的版本號(hào),那我是不是不能回未來(lái)了匹层?
"幸運(yùn)的是隙笆,Git時(shí)光機(jī)會(huì)記錄你輸入的每一條指令,你只需鍵入下述指令:

git reflog

拿到版本號(hào)又固,git reset即可~
另外有一點(diǎn)要注意的是:git reflog并不會(huì)永遠(yuǎn)保存仲器,
Git會(huì)定期清理“用不到的對(duì)象”,所以別指望還能找到幾個(gè)月前的提交仰冠!


13.Git命令別名

如果想偷懶乏冀,想少敲幾個(gè)字母,可以為命令設(shè)置別名洋只,然后鍵入別名就調(diào)用對(duì)應(yīng)指令辆沦,
比如將status設(shè)置成st:


14.Git命令的自動(dòng)補(bǔ)全

輸入Git命令的時(shí)候按兩次Tab就可以了!


小結(jié):

本節(jié)給大家詳細(xì)地講解了一波Git的本地命令识虚,應(yīng)該可以滿足日常的需要了肢扯,學(xué)習(xí)這一節(jié),建議
自己建一個(gè)倉(cāng)庫(kù)担锤,按著一步步走一遍指令蔚晨,相信你會(huì)獲益匪淺,敲得多就熟悉了!下節(jié)我們來(lái)
講解分支相關(guān)的概念以及指令铭腕!謝謝~


參考文獻(xiàn)

——作者:coder-pig银择,本教程不收取任何費(fèi)用,歡迎轉(zhuǎn)載累舷,轉(zhuǎn)載請(qǐng)注明出處浩考,尊重作者
勞動(dòng)成果,請(qǐng)勿用于商業(yè)用途被盈,侵權(quán)必究析孽!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市只怎,隨后出現(xiàn)的幾起案子袜瞬,更是在濱河造成了極大的恐慌,老刑警劉巖尝盼,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吞滞,死亡現(xiàn)場(chǎng)離奇詭異佑菩,居然都是意外死亡盾沫,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門殿漠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)赴精,“玉大人,你說(shuō)我怎么就攤上這事绞幌±儆矗” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵莲蜘,是天一觀的道長(zhǎng)谭确。 經(jīng)常有香客問(wèn)我,道長(zhǎng)票渠,這世上最難降的妖魔是什么逐哈? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮问顷,結(jié)果婚禮上昂秃,老公的妹妹穿的比我還像新娘。我一直安慰自己杜窄,他們只是感情好肠骆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著塞耕,像睡著了一般蚀腿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扫外,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天莉钙,我揣著相機(jī)與錄音纱注,去河邊找鬼。 笑死胆胰,一個(gè)胖子當(dāng)著我的面吹牛狞贱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜀涨,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼瞎嬉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了厚柳?” 一聲冷哼從身側(cè)響起氧枣,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎别垮,沒想到半個(gè)月后便监,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碳想,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年烧董,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胧奔。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逊移,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出龙填,到底是詐尸還是另有隱情胳泉,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布岩遗,位于F島的核電站扇商,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏宿礁。R本人自食惡果不足惜案铺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望窘拯。 院中可真熱鬧红且,春花似錦、人聲如沸涤姊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)思喊。三九已至壁酬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背舆乔。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工岳服, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人希俩。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓吊宋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親颜武。 傳聞我的和親對(duì)象是個(gè)殘疾皇子璃搜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

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

  • 來(lái)源:Git由淺入深之操作與指令作者:驚鴻三世(轉(zhuǎn)載已獲得原作者許可,如需轉(zhuǎn)載請(qǐng)與原作者聯(lián)系) 本篇正式開始介紹G...
    極樂(lè)君閱讀 1,628評(píng)論 9 67
  • Git大法好——3.Git分支本地操作詳解 標(biāo)簽: Git 引言 在上一節(jié)中我們對(duì)Git的常用本地操作的命令進(jìn)行詳...
    coder_pig閱讀 5,552評(píng)論 11 72
  • 感賞!謝謝宇宙篙议!又中獎(jiǎng)了唾糯!招財(cái)貓! 本來(lái)中了5塊錢鬼贱,結(jié)果搞活動(dòng)移怯,給我10塊!哈哈哈哈哈吩愧! 沒啥事兒就感賞芋酌!感賞!感賞雁佳!
    貓公主喵閱讀 63評(píng)論 0 1
  • This people who I like, even you waste my time, I still l...
    角落蜷縮閱讀 146評(píng)論 0 0
  • 簡(jiǎn)直太難找了,這里自己收藏起來(lái),以備不時(shí)之需! https://b.alipay.com/order/produc...
    iplaycodex閱讀 2,430評(píng)論 0 5