天天看點

Git常用指令總結

在平時開發中,Git成為必不可少的版本控制工具,但指令太多,并不能把所有的指令記住,結合網上的一些資訊,總結了一些常用的,慢慢熟悉吧。

初始化指令

檢視目前git配置資訊

# 顯示目前Git配置
$ git config --list      

設定git使用者資訊

# 設定送出代碼時的使用者資訊
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"      

初始化項目

# 在目前目錄建立一個Git代碼庫
$ git init      

克隆遠端倉庫代碼,url為倉庫位址

# 下載下傳一個項目和它的整個代碼版本(但不包含分支,需手動建立分支關聯,後面分支會提到)
$ git clone [url]      

關聯遠端庫,url為倉庫位址

#與遠端倉庫關聯,也可以直接clone後自動關聯
$ git remote add origin [url]      

增删指令

添加指定檔案

# 添加指定檔案到倉庫暫存區,可以指定多個檔案用空格隔開
$ git add [file1] [file2] ...
# 例子
$ git add name1.txt name2.txt name3.txt      

添加指定目錄

# 添加指定目錄到暫存區,包括子目錄
$ git add [dir]      

添加目前目錄下所有檔案

# 添加目前目錄的所有檔案到暫存區
$ git add .      

删除指定檔案

# 删除工作區檔案,并且将這次删除放入暫存區
$ git rm [file1] [file2] ...      

删除檔案與倉庫斷開關聯

# 停止追蹤指定檔案,但該檔案會保留在工作區
$ git rm --cached [file]      

檔案改名

# 改名檔案,并且将這個改名放入暫存區
$ git mv [file-original] [file-renamed]
# 例子
$ git mv oldName.txt newName.txt      

顯示資訊指令

檢視暫存區狀态

# 檢視git本地倉庫目前狀态
$ git status      

檢視暫存區修改情況

# 檢視暫存區檔案與倉庫檔案之間的不同修改
$ git diff      

檢視git日志

# 檢視git詳細日志,包含不同版本送出、時間、作者(前面配置email和name這裡會有用)
$ git log
# 檢視簡潔化日志 隻顯示commit資訊
$ git log --pretty=oneline      

檢視指令記錄

# 檢視指令記錄,回退版本時可根據指令編号來
$ git reflog      

暫存區域最新commit的差異

# 顯示暫存區和最新commit的差異
$ git diff --cached [file]      

工作區與最新commit的差異

# 顯示工作區與目前分支最新commit之間的差異
$ git diff HEAD      

某次送出的變化

# 顯示某次送出的中繼資料和内容變化
$ git show [commit]      

送出指令

送出暫緩區全部,并添加描述

# 送出暫存區到本地倉庫區
$ git commit -m [message]      

送出暫緩區個别檔案,并添加描述

# 送出暫存區的指定檔案到本地倉庫區
$ git commit [file1] [file2] ... -m [message]      

送出工作區修改的檔案(不需要看暫存區修改的檔案)

# 送出工作區自上次commit之後的變化,直接送出到本地倉庫區,隻針對修改後的檔案
# 若出現新的檔案,還是需要使用add指令,而不是用這個合成後的指令
$ git commit -am [message]      

修改上一次的送出描述

# 如果上一次的commit沒有push到遠端倉庫中,使用如下代碼可以修改送出描述
# 前提是沒有修改檔案,否則是一次新的添加效果
$ git commit --amend -m [message]
#----------------------------------
#通過vim編輯器來修改送出描述,效果一樣
$ git commit --amend      

分支指令

顯示本地所有分支

# 列出所有本地分支
$ git branch      

顯示所有遠端分支

# 列出所有遠端倉庫分支
$ git branch -r      

列出所有分支

# 列出所有本地分支和遠端分支
$ git branch -a      

建立分支

# 建立一個分支,但依然停留在目前分支
$ git branch [branch-name]      

建立并切換到新分支

# 建立一個分支,并切換到該分支
$ git checkout -b [branch]      

切換分支

# 切換到指定分支,并更新工作區
$ git checkout [branch-name]      

重命名分支

# 重命名分支,
$  git branch -m | -M oldbranch newbranch      

建立本地分支與遠端分支關聯

# 建立一個分支,與指定的遠端分支建立追蹤關系
$ git branch --track [branch] [remote-branch]      

指定分支與遠端分支關聯

# 建立追蹤關系,在現有分支與指定的遠端分支之間
$ git branch --set-upstream [branch] [remote-branch]      

與目前分支合并

# 合并指定分支到目前分支
$ git merge [branch]      

commit合并目前分支

# 選擇一個commit,合并進目前分支
$ git cherry-pick [commit]      

删除分支

# 删除分支
$ git branch -d [branch-name]      

删除遠端分支

# 删除遠端分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]      

标簽指令

列出所有标簽

# 列出所有tag
$ git tag      

目前commit建立一個标簽

# 建立一個tag在目前commit
$ git tag [tag]      

指定commit建立一個标簽

# 建立一個tag在指定commit
$ git tag [tag] [commit]      

删除本地标簽

# 删除本地tag
$ git tag -d [tag]      

删除遠端标簽

# 删除遠端tag
$ git push origin :refs/tags/[tagName]      

檢視标簽

# 檢視tag資訊
$ git show [tag]      

送出指定标簽

# 送出指定tag到遠端倉庫
$ git push [remote] [tag]      

送出所有标簽

# 送出所有tag
$ git push [remote] --tags      

建立分支指向某個tag

# 建立一個分支,指向某個tag
$ git checkout -b [branch] [tag]      

遠端同步指令

取回所有分支(branch)的更新

# 下載下傳遠端倉庫的所有變動
$ git fetch [remote]      

顯示所有遠端倉庫

# 顯示所有遠端倉庫
$ git remote -v      

顯示某個遠端倉庫

# 顯示某個遠端倉庫的資訊
$ git remote show [remote]      

增加一個遠端倉庫

# 增加一個新的遠端倉庫,并命名
$ git remote add [shortname] [url]      

取回遠端倉庫的變動,與本地分支合并

# 取回遠端倉庫的變化,并與本地分支合并
$ git pull [remote] [branch]      

推送本地指定分支

# 上傳本地指定分支到遠端倉庫
$ git push [remote] [branch]      

推送本地所有分支

# 推送所有分支到遠端倉庫
$ git push [remote] --all      

撤銷指令

撤銷工作區檔案的修改

# 讓工作區檔案回到最近一次git commit或git add時的狀态
$ git checkout [file]      

工作區指定檔案恢複到某次送出

# 恢複某個commit的指定檔案到工作區
$ git checkout [commit] [file]      

工作區所有檔案恢複到上一次送出狀态

# 恢複上一個commit的所有檔案到工作區
$ git checkout .      

重置指定的暫存區檔案

# 重置暫存區的指定檔案,與上一次commit保持一緻,但工作區不變
#等價于取消add操作
$ git reset [file]      

重置暫存區與工作區

# 重置暫存區與工作區,與上一次commit保持一緻
$ git reset --hard      

重置本地倉庫版本到某次commit送出,暫存區清空

# 重置目前分支的指針為指定commit,同時重置暫存區,但工作區不變
$ git reset [commit]      

重置本地倉庫版本和工作區到某次commit送出,暫存區清空

# 重置目前分支的HEAD為指定commit,同時重置暫存區和工作區,與指定commit一緻
$ git reset --hard [commit]      

重置本地倉庫版本到某次commit送出,暫存區和工作區不變

# 重置目前HEAD為指定commit,但保持暫存區和工作區不變
$ git reset --keep [commit]