一份詳細(xì)的Git 命令寶典
來源:帥地玩編程
作者:帥地
雖然之前學(xué)過 Git,不過用的比較少,很多原理也不是很清楚,所以最近是買了個(gè)視頻,靜下心來從零學(xué)習(xí)了下 Git,不過 Git 用來用去其實(shí)也就那幾個(gè)命令,今天這篇文章,我把那些命令都分類總結(jié)了一下(當(dāng)然,是參考別人的分類的),這些總結(jié)大部分來自于我買的一個(gè) Git 鼠標(biāo)墊,主要是為了以后自己忘記了方便查找。相信這份 Git 寶典,一定值得你收藏。
一、Git 配置相關(guān)
如果你首次使用 Git,那剛開始首先是需要配置各種身份信息的,這樣當(dāng)你提交相關(guān)任務(wù)的時(shí)候,別人才能知道這個(gè) commit 是誰(shuí)提交的。
(1)、Git 最小配置
1、配置全局賬戶,也就是該賬戶對(duì)所有的 Git 倉(cāng)庫(kù)都有效
git?config?--global?user.name?'你的賬戶名稱'
git?config?--global?user.email?'你的?Email'
2、配置局部賬戶,也就是該賬戶只對(duì)當(dāng)前 Git 倉(cāng)庫(kù)有效
git?config?--local?user.name?'你的賬戶名稱'?
git?config?--local?user.email?'你的?Email'
注意,不同點(diǎn)就是一個(gè)參數(shù)是 global(全局),一個(gè)是 local(本地)
(2)、查看相關(guān)配置情況
配置了之后,顯然有時(shí)候是需要查看我們當(dāng)前配置的相關(guān)情況的,可以使用如下命令
1、查看 global 類型的配置情況
git?config?--global?--list
2、查看某個(gè)倉(cāng)庫(kù)下的配置情況
git?config?--local?--list
二、本地基本操作
這部分命令有點(diǎn)多,也是使用的最頻繁的命令了,待我一一列舉出來,建議收藏
(1)、基本操作
1、查看變更情況
git?status
2、查看當(dāng)前工作在哪個(gè)分支上
git?branch?-v
3、切換到指定分支
git?checkout?指定分支的名稱
4、把當(dāng)前目錄及其子目錄下所有變更都加入到暫存區(qū)
git?add?.?//?注意,add 后面是一個(gè)?'.';
5、把倉(cāng)庫(kù)內(nèi)所有變更都假如到暫存區(qū)
git?add?-A
6、把指定文件添加到暫存區(qū)
git?add?文件1?文件2?...?文件n
7、創(chuàng)建正式的 commit,也就是把當(dāng)前的數(shù)據(jù)提交上去
git?commit
(二)、比較差異
1、比較某文件工作區(qū)和暫存區(qū)的差異
git?diff?某文件
2、比較某文件暫存區(qū)和 HEAD 的差異
git?diff?--cache?某文件
3、比較工作區(qū)和暫存區(qū)的所有差異
git?diff
4、比較暫存區(qū)和 HEAD 的所有差異
git?diff?--cache
(3)、暫存區(qū)與工作區(qū)之間回滾
1、把工作區(qū)指定文件恢復(fù)成和暫存區(qū)一樣
git?checkout?文件1?文件2?...?文件n
2、把暫存區(qū)指定文件回復(fù)和 HEAD 一樣
git?reset?文件1?文件2?...?文件n
3、把暫存區(qū)和工作區(qū)所有文件恢復(fù)成和 HEAD 一樣
git?reset?--hard
4、用 difftool 比較任意兩個(gè) commit 的差異
git?difftool?commit1?commit2
注意,從工作區(qū)回滾到暫存區(qū)則用 checkout ,否則用 reset
(四)、其他
查看哪些文件沒有被 Git 管控
git?ls-files?--others
三、加塞臨時(shí)任務(wù)處理
1、把未處理完的變更先保存到 stash 中
git?stash
2、臨時(shí)任務(wù)處理完后繼續(xù)之前的工作
git?stash?pop?//?pop?相當(dāng)于棧的出棧和入棧一樣,把之前的任務(wù)彈出來
或者
git?stash?apply?//?和?pop?不同的是,?apply?相當(dāng)于從棧頂把任務(wù)取出來,但是不過從棧中把任務(wù)移除
3、查看所有的 stash
git?stash?list
4、取回某次 stash 的變更
git?stash?pop?stash?@{數(shù)字n}
四、修改個(gè)人分支歷史
我們的倉(cāng)庫(kù)的內(nèi)容每次變更執(zhí)行 commit 的時(shí)候,都會(huì)生成一個(gè)新的 commit,不過有時(shí)候,我們不想產(chǎn)生新的 commit,而是想要通過修改之前的 commit 來變更倉(cāng)庫(kù)的內(nèi)容,那么就可以使用如下命令了
1、修改最后一次 commit
1、在工作區(qū)中修改文件
2、git?add
3、git?commit?--amend
2|、修改中間的 commit(假設(shè)代號(hào)為 X)
1.?git?rebase?-i?X前面的一個(gè)?commit?的?id
2.?在工作區(qū)修改文件
3.?git?add
4.?git?rebase?--contiue?
五、查看變更日志等
1、當(dāng)前分支各個(gè) commit 用一行顯示
git?log?--online
2、顯示最近的 n 個(gè) commit
git?log?-n
3、用圖示顯示所有的分支歷史
git?log?--online?--graph?--all
4、查看涉及到某文件變更的所有 commit
git?log?某文件
5、某文件各行最后修改對(duì)應(yīng)的 commit 以及作者
git?blame?某文件
六、分支與標(biāo)簽
1、創(chuàng)建新分支
基于當(dāng)前分支創(chuàng)建新分支
git?branch?新分支
基于指定分支創(chuàng)建新分支
git?branch?新分支?已有分支
基于某個(gè) commit 創(chuàng)建分支
git?branch?新分支?某個(gè)?commit?的id
創(chuàng)建分支并且切換到該分支
git?chechout?-b?新分支
2、列出分支
列出本地分支
git?branch?-v
列出本地和遠(yuǎn)端分支
git?branch?-av
列出遠(yuǎn)端所有分支
git?branch?-rv
列出名稱符號(hào)某樣式的遠(yuǎn)端分支
git?branch?-rv?-l?'某樣式'
3、刪除分支
安全刪除本地某分支
git?branch?-d?要?jiǎng)h除的分支
強(qiáng)行刪除本地分支
git?branch?-D?要?jiǎng)h除的分支
刪除已合并到 master 分支的所有本地分支
git?branch?--merged?master?|?grep?-v?'^\*\|?master'?|?xargs?-n?1?git?branch?-d
刪除遠(yuǎn)端 origin 已不存在的所有本地分支
git?remote?prune?origin
4、打標(biāo)簽
從 commit 打上標(biāo)簽
git?tag?標(biāo)簽名?commit?的id
七、兩分支之間的集成
1、把 A 分支合入到當(dāng)前分支,且為 merge 創(chuàng)建 commit
git?merge?A分支
2、把 A 分支合入到 B 分支,且為 Merge 創(chuàng)建 commit
git?merge?A分支?B分支?
3、把當(dāng)前分支基于B分支做 rebase,以便把B分支合入到當(dāng)前分支
git?rebase?B分支
4、把A分支基于B分支做rebase,以便把B分支合入到A分支
git?rebase?B分支?A分支
5、用 mergetool 解決沖突
git?mergetool
八、和遠(yuǎn)端交互
1、列出所有 remote
git?remote?-v
2、增加 remote
git?remote?add?url地址
3、刪除 remote
git?remote?remove?remote的名稱
4、改變 remote 的name
git?remote?rename?舊名稱?新名稱
5、把遠(yuǎn)端所有分支和標(biāo)簽的變更都拉到本地
git?fetch?remote
6、把遠(yuǎn)端分支的變更拉倒本地,且 merge 到本地分支
git?pull?remote名稱?分支名
關(guān)于 pull 和 fetch 的區(qū)別不懂可以看這篇文章從0學(xué)習(xí)Git:詳解git pull和git fetch的區(qū)別
7、把本地分支 push 到遠(yuǎn)端
git?push?remote名稱?分支名
8、刪除遠(yuǎn)端分支
git?push?remote?--delete?遠(yuǎn)端分支名
或者
git?push?remote:遠(yuǎn)端分支名
9、向遠(yuǎn)端提交指定標(biāo)簽
git?push?remote?標(biāo)簽名
10、向遠(yuǎn)端提交所有標(biāo)簽
git?push?remote?--tags
總結(jié)
如果把這些命令掌握了,那么 git 就順手拈來了,不過很多命令是比較容易忘的,所有還是比較需要一份 git 手冊(cè),以后用到的時(shí)候多查幾次,多用幾次命令,相信就能夠記住了。
不過單單會(huì)命令不知道原理的話還是不大行,至于原理,可以通過網(wǎng)上找文章慢慢了解,當(dāng)然,如果有需要,我后面也會(huì)分享 git 的一些原理,讓大家從本質(zhì)上讀懂 git。
兩年嘔心瀝血的文章:「面試題」「基礎(chǔ)」「進(jìn)階」這里全都有!
300多篇原創(chuàng)技術(shù)文章加入交流群學(xué)習(xí)海量視頻資源精美腦圖面試題長(zhǎng)按掃碼可關(guān)注獲取?
在看和分享對(duì)我非常重要!![]()
