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

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)必究!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容