日常使用的Git命令大全

做研發(fā)的朋友不可能不知道Git,Git在研發(fā)界里可謂是婦孺皆知。平時(shí)看到大佬都在流暢的敲命令行而你還在默默地使用可視化工具,是不是瞬間感覺自己弱爆了。今天來列出一些使用頻率較高的Git命令,掌握它其實(shí)你也可以擁有敲命令行的快感......


init &?clone

1、git?init?project_name

#初始化本地git倉庫,會在project_name下生成.git文件夾

2、git?clone?url(ssh/https)?project_name

#從遠(yuǎn)程克隆已有的項(xiàng)目到本地project_name目錄

3、git?add?.

#將當(dāng)前目錄下的所有新增加的和修改的文件,不包括已刪除的文件添加到暫存區(qū)

4、git?add?file_name

#將文件file_name添加至?xí)捍鎱^(qū),?文件名以空格分開可添加多個(gè)文件

5、git?add?-A

#添加所有新增加的和修改的和已刪除的文件至?xí)捍鎱^(qū)

5、git?add?--all

#添加所有新增加的和修改的和已刪除的文件至?xí)捍鎱^(qū)

6、git?add?-p?fileName(選擇E,打開編輯器去掉不需要的部分

#只提交一個(gè)文件的一部分內(nèi)容


mv & rm

1、git mv?fileName?newFileName

#文件重命名

2、git?rm?fileName

#刪除暫存區(qū)和工作區(qū)里的文件

3、git?rm --cached?||?rm?.git/index

#只刪除暫存區(qū)里的文件


reset?&?checkout

1、git?reset?--hard?HEAD?|| commitId

#此撤銷不會在歷史記錄中找到,就好像沒有提交一樣(git reflog才可查看記錄)

--mixed: (默認(rèn)值)?暫存區(qū)的內(nèi)容會被撤銷的版本內(nèi)容覆蓋,工作區(qū)不會被覆蓋

--soft:?暫存區(qū)和工作區(qū)的內(nèi)容不會被撤銷的版本所覆蓋,內(nèi)容保持原樣

--hard:?暫存區(qū)和工作區(qū)的的內(nèi)容都會被撤銷的版本所覆蓋

#只跟蹤被修改的文件

git push?-f?origin?master

#如果撤銷的版本已經(jīng)同步到遠(yuǎn)程分支,那么撤銷后再次同步到遠(yuǎn)程分支會提示當(dāng)前提交晚于遠(yuǎn)程的版本,提交不成功,需要強(qiáng)制推送到遠(yuǎn)程版本,(此操作很危險(xiǎn),如果遠(yuǎn)程版本已經(jīng)被別人同步過,強(qiáng)制推送會出現(xiàn)數(shù)據(jù)丟失的情況)

2、git checkout?HEAD?fileName?(commit => index => workplace)

#暫存區(qū)和工作區(qū)均被覆蓋

3、git?revert -n?commitId?

#此撤銷會生成新的提交,撤銷版本后面的版本依然保留

4、git?checkout?--?fileName?

#從暫存區(qū)中撤銷覆蓋工作區(qū)的內(nèi)容

5、git chekout?-b dev origin/dev?

(git checkout -t origin/dev)

(git checkout --track origin/dev)

#拉取遠(yuǎn)程dev分支到本地


diff

1、git diff?commitId?fileName

#對比工作區(qū)和提交差異

2、git diff?fileName

#對比工作區(qū)和暫存區(qū)的差異

3、git diff --cached fileName

#對比暫存區(qū)和版本庫的差異

4、git diff?head?fileName?

#對比工作區(qū)和版本庫的差異

5、git?diff?--stat

#統(tǒng)計(jì)新增和刪除了多少行

6、git diff?--numstat

#統(tǒng)計(jì)具體新增和刪除了哪一行


clean

1、git?clean?-f?

#清除工作區(qū)的文件

2、git clean?-d

#清除工作區(qū)的目錄


blame

1、git blame fileName

#查看一個(gè)文件里誰修改了什么東西


commit

1、git?commit -am?"強(qiáng)制提交,跳過暫存區(qū)"

#強(qiáng)制提交,跳過?add不包含新增的文件,提交后暫存區(qū)里有記錄

2、git commit --amend -m "編輯上一次提交"

#編輯上一次提交,會生成新的提交記錄

3、git commit?-m "暫存區(qū)提交到本地倉庫"

#將暫存區(qū)里的內(nèi)容提交至本地倉庫,(只提交暫存區(qū)里的內(nèi)容)

4、git commit?--allow-empty -m "允許空提交"

#允許空內(nèi)容提交,會有新的提交記錄


branch

1、git?branch?-f?newBr

#強(qiáng)制新建分支覆蓋原有分支

2、git checkout?-B?newBr

#強(qiáng)制新建并切換到新分支

3、git branch --remote

#查看遠(yuǎn)程分支

4、git branch -m?oldBr?newBr

#分支重命名

5、git?checkout?-b?newBr?commitId

#基于某次提交創(chuàng)建新分支

6、git stash?branch?newBr

#基于存儲建立新分支

7、git reflog?show --date=iso master

#查看分支創(chuàng)建時(shí)間

8、git?branch?-d?branch1?branch2

#同時(shí)刪除多個(gè)分支

9、git branch -D?branch

#強(qiáng)制刪除分支

10、git branch(cat .git/HEAD)

#查看當(dāng)前分支

11、git fetch?-p

#移除遠(yuǎn)程倉庫上不存在的分支

12、 git merge?newBr

#將newBr分支合并到當(dāng)前分支

快進(jìn)(fast-forward):當(dāng)你試圖合并兩個(gè)分支時(shí), 如果順著一個(gè)分支走下去能夠到達(dá)另一個(gè)分支,那么 Git 在合并兩者的時(shí)候, 只會簡單的將指針向前推進(jìn)(指針右移),因?yàn)檫@種情況下的合并操作沒有需要解決的分歧

合并提交:當(dāng)兩個(gè)分支相對于共同的祖先有了多次的提交,合并時(shí)會生成新的提交,它的有兩個(gè)父節(jié)點(diǎn)

合并沖突:當(dāng)兩個(gè)分支對同一文件同一地方做了不同的修改,合并時(shí)就會產(chǎn)生沖突,此時(shí)兩個(gè)分支合并了,但是沒有合并提交,需要手動去解決沖突再手動提交(此時(shí)會出現(xiàn)未合并狀態(tài)的文件,解決完沖突后使用git add 沖突的文件名 來標(biāo)記已解決的沖突)

13、git branch?-v

#查看每個(gè)分支的最后提交

--merged?與?--no-merged?這兩個(gè)有用的選項(xiàng)可以過濾這個(gè)列表中已經(jīng)合并或尚未合并到當(dāng)前分支的分支

14、git fetch?

#從遠(yuǎn)程拉取本地沒有的數(shù)據(jù),它不會影響工作區(qū)的內(nèi)容,會讓你自己合并

15、git pull(git fetch + git merge)

#從遠(yuǎn)程拉取本地沒有的數(shù)據(jù),同步工作區(qū)暫存區(qū)的內(nèi)容

16、git?push origin?--delete?dev

#刪除遠(yuǎn)程分支

17、git rebase master?

(git rebase master(目標(biāo)分支) experiment(主題分支))

git checkout master

git merge experiment

#變基,將當(dāng)前experiment分支并到master分支上,然后切換到master分支上,進(jìn)行合并

merge是通過三方合并(c2\c3\c4),最終生成新的提交:

merge和rebase合并的結(jié)果沒有什么區(qū)別,但是rebase使得整個(gè)過程更加整潔,沒有看到歷史分叉

變基的風(fēng)險(xiǎn):

變基操作的實(shí)質(zhì)是丟棄一些現(xiàn)有的提交,然后相應(yīng)地新建一些內(nèi)容一樣但實(shí)際上不同的提交。如果你已經(jīng)將提交推送至某個(gè)倉庫,而其他人也已經(jīng)從該倉庫拉取提交并進(jìn)行了后續(xù)工作,此時(shí),如果你用 git rebase 命令重新整理了提交并再次推送,你的同伴因此將不得不再次將他們手頭的工作與你的提交進(jìn)行整合,如果接下來你還要拉取并整合他們修改過的提交,事情就會變得一團(tuán)糟


log

1、git log

#不帶參數(shù)默認(rèn)會按先后順序列出所有提交

2、git log -p?(git log --patch)

#列出每次提交引入的差異,按補(bǔ)丁的格式展示

3、git?log?-n

#按條數(shù)輸出提交記錄

4、git log?--stat

#列出每次提交的粗略統(tǒng)計(jì)信息

5、git?log --pretty=子選項(xiàng)

--oneline:提交按一行顯示

--format:自定義格式化輸出,其格式化參數(shù)如下:

6、git log --graph

#選項(xiàng)添加了一些 ASCII 字符串來形象地展示你的分支、合并歷史


stash

1、git stash save "儲藏編輯過的文件"

#修改當(dāng)前分支到一半的時(shí)候,突然想還原,就可以將它儲藏起來,只對修改的文件生效

2、git?stash list

#查看儲藏列表

3、git stash?apply

#應(yīng)用最新的儲藏內(nèi)容,使用后仍然存在于歷史記錄中

4、git stash?pop

#應(yīng)用最新的存儲藏內(nèi)容,使用后并在歷史記錄中刪除掉

5、git stash?drop?

#刪除最新的儲藏


cat-file

1、git cat-file?-t commitId?

#查看此次提交的具體git對象

2、git cat-file -p?commitId

#查看git對象具體信息

3、wc?-l?fileName

#查看文件行數(shù)


grep

1、git??grep -n www

#檢索哪一行有www

2、git grep?--name-only www

#檢索文件名是否有www

3、git grep?-c?www

#統(tǒng)計(jì)文件中有幾行出現(xiàn)www


其他

git?log -p?

#查看歷史具體信息

git?reflog

#獲取所有操作歷史,包括撤銷的提交

git show -s

#查看提交信息

git ls-files --stage

#查看暫存區(qū)的內(nèi)容

rm -fr .git

#清空版本庫

git hash-object fileName

#查看文件對應(yīng)的hash值

git?cherry-pick?commitId

#兩個(gè)分支做相同的提交


想看更多內(nèi)容,請關(guān)注我的公眾號:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,273評論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,870評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,742評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,527評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,010評論 1 322
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,250評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,769評論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,656評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,853評論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,103評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,472評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,717評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,487評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,815評論 2 372