Git 常用操作匯總——cheat sheet

0. 前言

大家好,我是多選參數(shù)的程序員,一個(gè)正在 neng 操作系統(tǒng)耻讽、學(xué)數(shù)據(jù)結(jié)構(gòu)和算法以及 Java 的硬核菜雞。到今天為止帕棉,關(guān)于 Git 的大坑算是給填上了针肥。但是 Git 這個(gè)系列并不會(huì)結(jié)束饼记,程序員偶爾看到比較好的關(guān)于 Git 的文章也會(huì)整理一番發(fā)出來(lái),爭(zhēng)取在 Git 的坑上再長(zhǎng)棵樹(shù)慰枕。

1. 常用命令

1.1. git 配置

# 顯示 config 的配置 加--list

# 優(yōu)先級(jí):local > global > systemgit config --list --local # local 的范圍是某個(gè)倉(cāng)庫(kù)git config --list --global # global 的范圍是登錄的用戶git config --list --system # system 的范圍是系統(tǒng)所有登錄的用戶# 配置用戶 name 和 emailgit config --global user.name'your_name'

gitconfig --global user.email'your_email@domain.com'

# 清除配置信息git config --unset --global user.name

1.2. 倉(cāng)庫(kù)初始化

# 將執(zhí)行該命令時(shí)所在的目錄初始化為一個(gè) git 倉(cāng)庫(kù)(如:進(jìn)入某目錄后執(zhí)行該命令會(huì)將該目錄初始化為一個(gè) git 倉(cāng)庫(kù))

gitinit

# 會(huì)在當(dāng)前路徑下創(chuàng)建和項(xiàng)目名稱同名的文件夾具则,并將其初始化為 git 倉(cāng)庫(kù)gitinityour_project

1.3. git add

gitaddreadme.md# 將 readme.md 文件添加到暫存區(qū)

git add . # 將當(dāng)前工作目錄的所有文件添加到暫存區(qū)

git add -u # 把修改之后的文件(這些文件已經(jīng)被管理起來(lái)了)一次性提交到暫存區(qū)

1.4. git status

gitstatus# 查看工作目錄和暫存區(qū)的狀態(tài)

1.5. git commit

gitcommit -m'Add readme.md'# -m 指定 commit 的信息

git commit # 這時(shí)候會(huì)跳出一個(gè)文本輸入界面,讓你輸入更多的 commit 信息

1.6. git mv

gitmv readme readme.md# 將 git 管理的文件進(jìn)行重命名

1.7. git rm

gitrm filename# 從 git 管理的文件刪除某個(gè)已管理的文件具帮,同時(shí)把修改的情況添加到暫存區(qū)

1.8. git log

gitlog# 只查看當(dāng)前分支(Head所指的分支)的log情況

gitlog--oneline # 簡(jiǎn)潔的顯示版本更新信息

gitlog-n2? # n2 代表查看最近兩次commit歷史

gitlog-2#2代表查看最近兩次commit歷史

gitlog-n2 --oneline # 簡(jiǎn)潔的顯示最近兩次的版本更新信息

gitlogbranch_name # 后面跟上分支名表示查看該分支的log日志

gitlog-all # 列出所有分支的log

gitlog--all --graph # 以圖形化的方式查看

gitlog--oneline --all # 以簡(jiǎn)潔的方式查看所有分支的log

gitlog--oneline --all -n4# 以簡(jiǎn)潔的方式查看所有分支的log

git helplog# 以web的方式查看log的幫助文檔博肋,等同于

git help --weblog# 和上面那條效果一樣

2. 分支相關(guān)

gitbranch -v# 查看本地分支的詳細(xì)情況

git branch -a # 查看所有分支,包括遠(yuǎn)端分支蜂厅,但沒(méi)有過(guò)于詳細(xì)的信息

git branch -av # 查看所有分支情況

git branch branch_name hash_value # 創(chuàng)建一個(gè)新的分支匪凡,基于 hash_value 的這個(gè) commit 創(chuàng)建一個(gè)新的分支,hash_value 可以省略掘猿,那么默認(rèn)是基于當(dāng)前分支的最后一個(gè) commit 創(chuàng)建病游。

git branch -d branch_name

git branch -D branch_name? # 這個(gè)分支已經(jīng)有了一些 commit

git checkout branch_name # 切換分支

git checkout master

git checkout -b branch_name git_id # 創(chuàng)建一個(gè)新的分支并切換過(guò)去,git_id可以是hash_value稠通,也可以是某個(gè)分支的名字(分支的名字其實(shí)就指向了某個(gè) commit)

git checkout -b temp 9ef147d

git checkout -b temp2 master

git checkout hash_value? # 分離頭指針

3. 比較

gitdiff hash_value1 hash_value2# hash_value1 對(duì)應(yīng)的 comimit 和 hash_value2 對(duì)應(yīng)的 commit 進(jìn)行比較

git diff hash_value1 hash_value2 -- file_name1 file_name2 # 在上述基礎(chǔ)之上衬衬,只比較 file_name1、file_name2 這兩個(gè)文件

git diff branch_name1 branch_name2 # 對(duì)兩個(gè)分支進(jìn)行比較采记,也可以跟 -- 只看某些文件

git diff HEAD HEAD^? # HEAD 指向的 commit 與該 commit 的父親 commit 進(jìn)行比較

git diff HEAD HEAD^^ # HEAD 指向的 commit 與該 commit 的父親的父親 commit 進(jìn)行比較

git diff HEAD HEAD~? # HEAD 指向的 commit 與該 commit 的父親 commit 進(jìn)行比較

git diff HEAD HEAD~1 # 同上

git diff HEAD HEAD~2 # HEAD 指向的 commit 與該 commit 的父親的父親 commit 進(jìn)行比較

git diff --cached? # 暫存區(qū)和 HEAD 做比較佣耐,也可以跟 -- 只看某些文件

git diff? ? ? # 工作目錄和暫存區(qū)中所有文件進(jìn)行比較,也可以跟 -- 只看某些文件

4. 版本歷史更改

gitcommit --amend# 最近一次 commit 的 message 修改

git rebase -i hash_value # 交互文件中選擇 reword唧龄,老舊 commit 的 message 修改。hash_value奸远,是需要的 commit 的父親 commit 的 hash_value

git rabase -i hash_value # 交互文件中選擇 squash既棺,多個(gè)連續(xù) commit 合并成一個(gè),hash_value 同上

git rebase -i hash_value # 交互文件中選擇 squash懒叛,把間隔的 commit 移到一塊丸冕,即可合并成一個(gè),hash_value

git rebase origin/master # 把當(dāng)前分支基于 origin/master 做 rebase 操作薛窥,也就相當(dāng)于把當(dāng)前分支的東西加到 origin/master 中

5. 回滾操作

gitresetHEAD# 暫存區(qū)恢復(fù)成和 HEAD 一樣

git reset HEAD -- file_name1 file_name2 # 暫存區(qū)部分文件變得跟 HEAD 一樣

git checkout -- file_name # 工作目錄指定文件恢復(fù)為和暫存區(qū)一樣

git checkout -- *|. ## 工作目錄全部文件恢復(fù)為和暫存區(qū)一樣

git reset --hard hash_value # 把 HEAD胖烛、暫存區(qū)、工作目錄都回滾到 hash_value 所代表的 commit 中诅迷。

git reset --hard? # 把暫存區(qū)里面的修改去掉佩番,也就是讓暫存區(qū)、工作目錄默認(rèn)恢復(fù)到 HEAD 的位置

6. 工作目錄罢杉、暫存區(qū)狀態(tài)保存

gitstash# 把相應(yīng)的修改內(nèi)容給存下來(lái)趟畏,之后 git status 查看的話又變?yōu)槭裁炊紱](méi)改變的了

git stash list # 查看存下來(lái)的內(nèi)容

git stash apply # 存下來(lái)的內(nèi)容又恢復(fù)了,但是存下來(lái)的內(nèi)容還在 stash 中

git stash pop? # 存下來(lái)的內(nèi)容恢復(fù)了滩租,但是存下來(lái)的內(nèi)容也沒(méi)了

7. 合并

gitmergebranch_name1 branch_name2

gitmergehash_value1 hash_value2

gitmerge--squash # 以 squash 方式進(jìn)行 merge

8. Git 對(duì)象操作

gitcat-file -t|p|s hash_value# 顯示版本庫(kù)對(duì)象的內(nèi)容赋秀,類型及大小信息

git cat-file -t hash_value? # 查看版本庫(kù)對(duì)象的類型

git cat-file -p hash_value? # 查看版本庫(kù)對(duì)象的內(nèi)容

git cat-file -s hash_value? # 查看版本庫(kù)對(duì)象的大小

9. Git 遠(yuǎn)端操作

git remote add<遠(yuǎn)端名><遠(yuǎn)端倉(cāng)庫(kù)地址># 這邊遠(yuǎn)端名的意思是遠(yuǎn)端倉(cāng)庫(kù)的別名利朵,push、pull 都將用到遠(yuǎn)端名

git remote -v? # 查看遠(yuǎn)端倉(cāng)庫(kù)連接情況git remote set-url<遠(yuǎn)端名>你新的遠(yuǎn)程倉(cāng)庫(kù)地址 # 修改遠(yuǎn)端倉(cāng)庫(kù)地址

git remote rm<遠(yuǎn)端名># 刪除遠(yuǎn)端倉(cāng)庫(kù)

git clone<遠(yuǎn)端倉(cāng)庫(kù)地址># 把遠(yuǎn)端倉(cāng)庫(kù) clone 下來(lái)

git clone --bare<遠(yuǎn)端倉(cāng)庫(kù)地址># bare 是指不帶工作目錄猎莲,也就相當(dāng)于只 clone .git 目錄

git push<遠(yuǎn)端名><本地分支名>

git push -u<遠(yuǎn)端名><本地分支名># -u 表示將本地分支的內(nèi)容推到遠(yuǎn)端分支绍弟,并且將本地分支和遠(yuǎn)端分支關(guān)聯(lián)起來(lái)

git push -u origin master # 表示把本地 master 分支的內(nèi)容推到遠(yuǎn)端分支 origin/master,并且將本地分支 master 和遠(yuǎn)端分支 origin/master 關(guān)聯(lián)起來(lái)git push # 這條命令也可以使用著洼,默認(rèn)是將當(dāng)前本地所在分支推到相關(guān)聯(lián)的遠(yuǎn)端分支git fetch<遠(yuǎn)端名><本地分支名>

git fetch origin master # 將遠(yuǎn)端分支 origin/master fetch 到本地git pull<遠(yuǎn)端名><本地分支名># 將遠(yuǎn)端分支 fetch 到本地樟遣,并且將遠(yuǎn)端分支和本地所處分支進(jìn)行合并

git pull --rebase # 以 rebase 方式進(jìn)行合并,也就是將本地分支 rebase 到遠(yuǎn)端分支

最后郭脂,小編想說(shuō):我是一名python開(kāi)發(fā)工程師年碘,

整理了一套最新的python系統(tǒng)學(xué)習(xí)教程,

想要這些資料的可以關(guān)注私信小編“01”即可(免費(fèi)分享哦)希望能對(duì)你有所幫助.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末展鸡,一起剝皮案震驚了整個(gè)濱河市屿衅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌莹弊,老刑警劉巖涤久,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異忍弛,居然都是意外死亡响迂,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門细疚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蔗彤,“玉大人,你說(shuō)我怎么就攤上這事疯兼∪欢簦” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵吧彪,是天一觀的道長(zhǎng)待侵。 經(jīng)常有香客問(wèn)我,道長(zhǎng)姨裸,這世上最難降的妖魔是什么秧倾? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮傀缩,結(jié)果婚禮上那先,老公的妹妹穿的比我還像新娘。我一直安慰自己扑毡,他們只是感情好胃榕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般勋又。 火紅的嫁衣襯著肌膚如雪苦掘。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天楔壤,我揣著相機(jī)與錄音鹤啡,去河邊找鬼。 笑死蹲嚣,一個(gè)胖子當(dāng)著我的面吹牛递瑰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播隙畜,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼抖部,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了议惰?” 一聲冷哼從身側(cè)響起慎颗,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎言询,沒(méi)想到半個(gè)月后俯萎,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡运杭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年夫啊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辆憔。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡撇眯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出虱咧,到底是詐尸還是另有隱情叛本,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布彤钟,位于F島的核電站,受9級(jí)特大地震影響跷叉,放射性物質(zhì)發(fā)生泄漏逸雹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一云挟、第九天 我趴在偏房一處隱蔽的房頂上張望梆砸。 院中可真熱鬧,春花似錦园欣、人聲如沸帖世。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)日矫。三九已至赂弓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哪轿,已是汗流浹背盈魁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留窃诉,地道東北人杨耙。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像飘痛,于是被迫代替她去往敵國(guó)和親珊膜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

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

  • 參考git詳細(xì)教程:一小時(shí)學(xué)會(huì)git 1. git的分區(qū) 工作區(qū)(Working Directory)---->暫...
    息息小眠蟲(chóng)閱讀 877評(píng)論 0 0
  • git 倉(cāng)庫(kù)特點(diǎn) 使用快照流 近乎所有操作都是本地執(zhí)行 一般只添加數(shù)據(jù)三種狀態(tài):modified -> commi...
    大雄的學(xué)習(xí)人生閱讀 801評(píng)論 0 8
  • Git 學(xué)習(xí)筆記 --- 安裝和基本配置 基本資料 GitHub地址 https://github.com/ 感謝...
    陳小陌丿閱讀 353評(píng)論 0 0
  • 看懂下圖宣脉,大概就可以記住日常常用的幾個(gè)命令了车柠,文章后面列出列不同狀態(tài)場(chǎng)景下常用的命令。 常用命令 1. 新建代碼...
    Stool閱讀 318評(píng)論 0 0
  • 說(shuō)明脖旱,參考1:http://www.ruanyifeng.com/blog/2015/12/git-cheat-s...
    福霜閱讀 338評(píng)論 0 0