參考指令:https://liaoxuefeng.gitee.io/resource.liaoxuefeng.com/git/git-cheat-sheet.html#
基礎(chǔ)指令
把目錄變成Git可以管理的倉(cāng)庫(kù)
git init
把文件添加到版本庫(kù)
git add <file1> <file2> ...
把文件提交到倉(cāng)庫(kù)
git commit -m <describe>
顯示工作區(qū)狀態(tài)
git status
顯示提交內(nèi)容和工作區(qū)之間等的差異
git diff <file>
顯示提交日志
git log [--pretty=oneline]
重置當(dāng)前HEAD到指定狀態(tài)(版本回退)
git reset --hard [HEAD / commit id]
HEAD : 當(dāng)前版本
HEADn... : n個(gè)版本(n 為 ^),也可以寫成HEAD~n (此時(shí) n 為數(shù)字)
commit id :版本號(hào)
查看命令歷史
git reflog
撤銷修改
git checkout -- <file>
一種是readme.txt自修改后還沒(méi)有被放到暫存區(qū),現(xiàn)在,撤銷修改就回到和版本庫(kù)一模一樣的狀態(tài);
一種是readme.txt已經(jīng)添加到暫存區(qū)后,又作了修改,現(xiàn)在,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)。
總之,就是讓這個(gè)文件回到最近一次git commit或git add時(shí)的狀態(tài)。
git checkout -- file命令中的 -- 很重要,沒(méi)有--,就變成了“切換到另一個(gè)分支”的命令
撤銷暫存區(qū)的修改
git reset HEAD <file>
git reset命令既可以回退版本,也可以把暫存區(qū)的修改回退到工作區(qū)。當(dāng)我們用HEAD時(shí),表示最新的版本
如果暫存區(qū)提交到了版本庫(kù),可以使用[版本回退]到指定版本
刪除文件
git add/rm <file> : 先手動(dòng)刪除文件,然后使用 git rm <file> 和 git add <file> 效果是一樣的
另一種情況是刪錯(cuò)了,因?yàn)榘姹編?kù)里還有,所以可以很輕松地把誤刪的文件恢復(fù)到最新版本:git checkout -- <file>
git checkout -- 其實(shí)是用版本庫(kù)里的版本替換工作區(qū)的版本,無(wú)論工作區(qū)是修改還是刪除,都可以“一鍵還原”。
遠(yuǎn)程倉(cāng)庫(kù)
添加遠(yuǎn)程庫(kù)
由于你的本地Git倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)(github/gitee)之間的傳輸是通過(guò)SSH加密的,登陸github/gitee,添加你自己的id_rsa.pub文件的內(nèi)容。所以,需要一點(diǎn)設(shè)置:
創(chuàng)建SSH Key
ssh-keygen -t rsa -C "你的郵箱"
本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù),兩個(gè)倉(cāng)庫(kù)進(jìn)行遠(yuǎn)程同步
git remote add origin git@gitee.com:xxxxxxx.git :遠(yuǎn)程庫(kù)的名字就是origin
本地庫(kù)的所有內(nèi)容推送到遠(yuǎn)程庫(kù)上
git push -u origin master
第一次推送master分支時(shí),加上了-u 參數(shù),Git不但會(huì)把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支,
還會(huì)把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來(lái),在以后的推送或者拉取時(shí)就可以簡(jiǎn)化命令
git push origin master
查看遠(yuǎn)程庫(kù)信息
git remote -v
刪除遠(yuǎn)程庫(kù)
git remote rm origin
此處的“刪除”其實(shí)是解除了本地和遠(yuǎn)程的綁定關(guān)系,并不是物理上刪除了遠(yuǎn)程庫(kù)。
遠(yuǎn)程庫(kù)本身并沒(méi)有任何改動(dòng)。要真正刪除遠(yuǎn)程庫(kù),需要登錄到遠(yuǎn)程倉(cāng)庫(kù),在后臺(tái)頁(yè)面找到刪除按鈕再刪除。
遠(yuǎn)程庫(kù)克隆
從遠(yuǎn)程庫(kù)克隆到本地庫(kù)
git clone git@gitee.com:xxxxxxx.git
遠(yuǎn)程倉(cāng)庫(kù)給出的地址不止一個(gè),還可以用 https://gitee.com/xxxx.git 這樣的地址。
實(shí)際上,Git支持多種協(xié)議,默認(rèn)的git://使用ssh,但也可以使用https等其他協(xié)議。
使用https除了速度慢以外,還有個(gè)最大的麻煩是每次推送都必須輸入口令,
但是在某些只開放http端口的公司內(nèi)部就無(wú)法使用ssh協(xié)議而只能用https
分支管理
創(chuàng)建并切換分支
git checkout -b <分支>
-b :創(chuàng)建并切換,相當(dāng)于以下兩條命令:
git branch dev
git checkout dev
查看當(dāng)前分支
git branch
切換分支
git checkout <分支>
合并分支
git merge <分支> : 用于合并指定分支到當(dāng)前分支
刪除分支
git branch -d <分支>
儲(chǔ)藏工作現(xiàn)場(chǎng)
git stash
查看儲(chǔ)藏工作現(xiàn)場(chǎng)列表
git stash list
復(fù)制一個(gè)特定的提交到當(dāng)前分支
git cherry-pick <commit id>
如果要丟棄一個(gè)沒(méi)有被合并過(guò)的分支
git branch -D <分支>
標(biāo)簽管理
創(chuàng)建標(biāo)簽
git tag <標(biāo)簽名稱>
給指定的 commit id 創(chuàng)建標(biāo)簽
git tag <標(biāo)簽名稱> <commit id>
刪除標(biāo)簽
git tag -d <標(biāo)簽名稱>
推送標(biāo)簽到遠(yuǎn)程
git push origin <標(biāo)簽名稱>
一次性推送全部尚未推送到遠(yuǎn)程的本地標(biāo)簽
git push origin --tags
從遠(yuǎn)程刪除標(biāo)簽
git push origin :refs/tags/<標(biāo)簽名稱> : 刪除遠(yuǎn)程標(biāo)必須先從本地刪除