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