Git 常用指令教程

參考指令: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)必須先從本地刪除
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容