在平時開發中,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]