Git大法好——2.Git本地操作指令詳解
標(biāo)簽: Git
引言
上節(jié)給大家講解了有關(guān)于Git的一些概念,Git的引入,Git的四個(gè)組成部分,Git文件的狀態(tài),以及
Git的下載安裝;前面也講過Git和SVN有個(gè)明顯的差別就是,Git可以不需要網(wǎng)絡(luò)就可以進(jìn)行版本
控制,這是因?yàn)镚it中每個(gè)電腦都擁有一個(gè)本地的版本庫,而遠(yuǎn)程的倉庫僅僅是作為我們交換修改
的一個(gè)工具!即使失去這個(gè)工具,我們也可以干活,只是交換修改不方便罷了,假如是SVN,遠(yuǎn)程
服務(wù)器掛了...所以,我們使用Git的時(shí)候大部分時(shí)間都是在進(jìn)行Git的一些本地操作,當(dāng)然還有
遠(yuǎn)程服務(wù)器分支合并的一些問題等,本節(jié)我們就先來熟悉一波本地操作的一些常用指令!本節(jié)
講解的內(nèi)容概要如下:
- 1.設(shè)置您的身份信息(git config)
- 2.獲取幫助(git help)
- 3.創(chuàng)建本地的代碼倉庫(git init)
- 4.將文件放入暫存區(qū)(git add)
- 5.將暫存區(qū)的內(nèi)容提交到本地倉庫(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)記,比如誰對(duì)某個(gè)文件進(jìn)行了修改,鍵入下述命令:
git config --global user.name "coder-pig"
git config --global user.email "779878443@qq.com"
配置完后,把""部分信息去掉,輸多一次上面的指令,可以看到是否配置成功
也可以鍵入下述指令來查看所有的Git設(shè)置:
git config --list
另外,上面設(shè)置的配置信息是全局的,一般我們在公司上班,基本協(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è)倉庫的git配置就不會(huì)和全局的相同,
從而可以避免一些不必要的麻煩!
2.獲取幫助
和其他的命令行一樣,Git同樣是帶有help指令的,當(dāng)我們遇到?jīng)]見過,又或者忘記用法的
指令,我們可以鍵入:
git help init
把init改成你要查詢的那個(gè)指令即可!比如git help add!
win下會(huì)打開一個(gè)Git的Manual(手冊)的頁面,可以在之類查看指令的一些用法
而Ubuntu下則會(huì)直接在命令行輸出:
當(dāng)然你也可以到Git官方手冊中查找對(duì)應(yīng)的指令!
3.創(chuàng)建本地的代碼倉庫
你可以直接鍵入下述指令創(chuàng)建一個(gè)新的帶Git倉庫的項(xiàng)目:
git init GitForTest
把GitForTest改成你想創(chuàng)建的工程名即可!接著我們可以來到新創(chuàng)建的工程的
目錄下,這里需要 修改下讓隱藏文件可見,就可以看到.git的文件夾里,里面
東東就是我們git倉庫的東東了,切記 別隨意去改或者刪除里面的東西!(你也
可以鍵入:ls -ah來查看隱藏文件)
當(dāng)然假如你已經(jīng)有項(xiàng)目了,想在之前項(xiàng)目的基礎(chǔ)上添加Git倉庫,那么通
過命令行或者git bash來到當(dāng)前工程的文件夾目錄下,鍵入下述指令即可
為你的項(xiàng)目添加本地Git倉庫:
git init
4.將文件放入暫存區(qū)
前面Git文件狀態(tài)我們講過假如文件未加入版本控制,那么該文件處于Untracked
(未跟蹤)的狀態(tài),我們可以通過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倉庫,會(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)來添加文件
4.輸入?會(huì)彈出相關(guān)提示,然后直接回車,結(jié)束選擇!
5.然后再次輸入git add -i,輸入4,可以看到已不存在untacked的文件了!
當(dāng)然還有其他幾個(gè)指令,限于篇幅,有興趣的可以自己研究研究!
5.將暫存區(qū)的內(nèi)容提交到本地倉庫
我們可以通過git commit -m “xxx”指令將暫存區(qū)的內(nèi)容提交到倉庫中
git commit -m "修改了xxx"
后面的-m是對(duì)本次提交的說明,"xxx"是說明內(nèi)容,不該偷懶省去,假如你這里不
輸入,-m "xxx" 的話,也會(huì)讓你進(jìn)入Vi/Vim來編寫聲明信息的~所以建議還是在這
里進(jìn)行提交內(nèi)容的說明吧!
另外,我們的項(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指令來查看工作區(qū)與暫存區(qū)的當(dāng)前情況,比如工作區(qū)有什么
文件和暫存區(qū)的文件 對(duì)比,發(fā)生了改變,要不要add下?又比如暫存區(qū)里有東西add
了,但是還沒提交等等,直接鍵入下述指令:
git status
比如我這里修改了下README.md文件,只是改了還沒add:
add文件后:
commit提交暫存區(qū)內(nèi)容
恩,很簡單,另外,你還可以用下述指令,讓結(jié)果以簡短的形式輸出~
git status -s
7.查看工作區(qū)與暫存區(qū)的差異
上面我們可以通過git status獲取當(dāng)前工作區(qū)與緩存區(qū)的狀態(tài),僅僅是狀態(tài),
假如我們需要查看發(fā)生改變的內(nèi)容,那么你需要鍵入下述指令:
git diff
這樣就可以看到當(dāng)前的工作區(qū)與暫存區(qū)中對(duì)比,做了哪些修改!
PS:上面是我們在README.md文件里添加了一條語句,然后再鍵入git diff!
8.查看提交更改的記錄
還記得之前的網(wǎng)購的例子嗎,我們可以在我的訂單中找到自己的訂單記錄,
同樣,在Git中,我們也可以查看所有commit的記錄!可以鍵入下述指令:
git log
當(dāng)然,你也可以調(diào)用下述指令獲得更精簡的結(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!被刪除的文件又回來了~
當(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文件是沒有
作用的!我們需要通過git reset指令來廢除此次修改記錄(版本回退),讓當(dāng)前文件
回到上一次提交時(shí)的狀態(tài)!鍵入:
git reset HEAD xxx.xxx
此時(shí)再調(diào)用:
git checkout -- xxx.xxx
文件即可恢復(fù)原樣!
11.文件恢復(fù)(已commit)——版本回退
假如,我們的文件修改已經(jīng)commit了,而你無端端的又后悔了,想恢復(fù)成上一次
commit時(shí)的文件,又或者上上次的,這時(shí)候你可能開始方了,不過Git為我們提
供了時(shí)光機(jī)(版本回退),我們可以通過下述指令回退到上一個(gè)版本:
git reset HEAD^
恩,我們鍵入git log后可以看到版本已經(jīng)回退到上一個(gè)版本了!
如果是上上個(gè)版本,你只需加多,再上一個(gè)版本繼續(xù)加,如此類推!
當(dāng)然,除了上面的形式,你還可以根據(jù)版本號(hào)來回退,比如這里我退到第一個(gè)版本
git reset --hard 8c3f91f
嘿嘿,無壓力,你突然又后悔了,想回到新的那個(gè)版本,嗯...好吧,同樣是上面
的指令:不過版本號(hào)改成最新那次commit的版本號(hào)就可以了!
git reset --hard cf2d155
12.查看輸入的每一條指令
你可能會(huì)支支吾吾的過來對(duì)我說:"恩,那個(gè)我剛剛把命令行關(guān)了,那個(gè)最新的版
本號(hào)找不著了,git log也找不到那個(gè)最新的版本號(hào),那我是不是不能回未來了?
"幸運(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è)倉庫,按著一步步走一遍指令,相信你會(huì)獲益匪淺,敲得多就熟悉了!下節(jié)我們來
講解分支相關(guān)的概念以及指令!謝謝~
參考文獻(xiàn):
——作者:coder-pig,本教程不收取任何費(fèi)用,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明出處,尊重作者
勞動(dòng)成果,請(qǐng)勿用于商業(yè)用途,侵權(quán)必究!