常用
關(guān)于Git配置
# 查看當(dāng)前git環(huán)境詳細(xì)配置
git config -l
# 查看系統(tǒng)config 配置文件在git安裝目錄/etc/gitconfig
git config --system --list
# 查看當(dāng)前用戶配置 配置文件在~/.gitconfig
git config --global --list
# 配置文件在當(dāng)前項目的/.git/config
git config --local --list
# 查看所有的配置以及它們所在的文件
git config --list --show-origin
# 查看當(dāng)前分支(詳細(xì))
git config --lis
git config [--local][--global][--system] section.key value
# 設(shè)置全局名稱
git config --global user.name "Your Name"
# 設(shè)置全局郵箱
git config --global user.email "email@example.com"
# 設(shè)置當(dāng)前項目的用戶名
git config --local user.name xxxx
# 配置當(dāng)前用戶的編碼項梭冠,可以解決中文編碼問題
git config --global core.quotepath false
# 配置當(dāng)前項目不忽略文件大小寫控漠,git默認(rèn)忽略文件名的大小寫,這點(diǎn)值得注意
git config --local core.ignorecase false
# 設(shè)置git默認(rèn)文本編輯器(啟動路徑文本)
git config --global core.editor "[path]"
# 設(shè)置git默認(rèn)文本編輯器(某個內(nèi)置編輯器)
git config --global core.editor emacs\vim
Git初始化與克隆
# 在當(dāng)前目錄新建一個倉庫
git init
# 在一個目錄下新建本地倉庫
git init [project-name]
# 克隆一個遠(yuǎn)程倉庫
git clone [url]
# 克隆一個遠(yuǎn)程倉庫到某個目錄
git clone [url] [dir-name]
添加到暫存區(qū)修改與提交
# 查看狀態(tài)
git status
# 查看變更內(nèi)容
git diff
# 從工作區(qū)添加指定文件到暫存區(qū)
git add [file-name1] [file-name2] ...
# 添加指定目錄到暫存區(qū)偶翅,包括子目錄
git add [directory]
# 將工作區(qū)的被修改的文件和新增的文件提交到暫存區(qū)倒堕,不包括被刪除的文件
git add .
# u指update爆价,將工作區(qū)的被修改的文件和被刪除的文件提交到暫存區(qū)铭段,不包括新增的文件
git add -u .
# A指all,將工作區(qū)被修改憔披、被刪除爸吮、新增的文件都提交到暫存區(qū)
git add -A .
# 文件改名
git mv [oldname] [newname]
# 刪除文件
git rm [file]
# 停止跟蹤文件單不刪除
git rm --cached [file]
# 遞歸刪除
git rm -r *
# 提交
git commit -m 'xxx'
# 修改commit信息 本次
git commit --amend
# 合并上一次提交(用于反復(fù)修改)
git commit --amend -m 'xxx'
# 將add和commit合為一步
git commit -am 'xxx'
查看提交歷史
# 查看提交歷史
git log
# 顯示x行日志 -x為x行
git log -[number]
# 查看指定文件的提交歷史
git log -p [file]
# 以列表的方式查看指定文件的提交歷史
git blame [file]
# 顯示提交日志及相關(guān)變動文件
git log --stat
撤銷
# 撤銷工作目錄中所有未提交文件的修改內(nèi)容
git reset --hard HEAD
# 撤銷置頂?shù)奈刺峤晃募男薷膬?nèi)容
git checkout HEAD [file]
# 撤銷指定的提交
git revert [commit]
比對
# 顯示所有未添加至index的變更
git diff
# 顯示所有已添加index但還未commit的變更
git diff --cached
# 比較與上一個版本的差異
git diff HEAD^
# 比較與HEAD版本lib目錄的差異
git diff HEAD -- ./lib
# 比較遠(yuǎn)程分支master上有本地分支master上沒有的
git diff origin/master..master
# 只顯示差異的文件锰霜,不顯示具體內(nèi)容
git diff origin/master..master --stat
遠(yuǎn)程庫
# 查看項目遠(yuǎn)程倉庫
git remote -v
# 添加遠(yuǎn)程倉庫地址
git remote add origin [url]
# 刪除遠(yuǎn)程倉庫源
git remote remove origin
# 獲取所有遠(yuǎn)程分支(不更新本地分支癣缅,另需merge)
git fetch
# 獲取所有原創(chuàng)分支并清除服務(wù)器上已刪掉的分支
git fetch --prune
# 列出所有本地標(biāo)簽
git tag
# 基于最新提交常見標(biāo)簽
git tag [tagname]
# 刪除標(biāo)簽
git tag -d [tagname]
# -a : 理解為 annotated 的首字符友存,表示 附注標(biāo)簽
# -m : 指定附注信息
git tag -a [tagname] -m xxxxxx
git tag -a [tagname] [version] -m xxxxx
# 推送標(biāo)簽至遠(yuǎn)程服務(wù)器
git push origin tag [tagname]
分支
# 顯示本地分支
git branch
# 顯示包含提交50089的分支
git branch --contains [name]
# 顯示所有分支
git branch -a
# 刪除本地新建分支
git branch -d [name]
# 顯示所有原創(chuàng)分支
git branch -r
# 顯示所有已合并到當(dāng)前分支的分支
git branch --merged
# 顯示所有未合并到當(dāng)前分支的分支
git branch --no-merged
# 本地分支改名
git branch -m [old] [new]
# 從當(dāng)前分支創(chuàng)建新分支并檢出
git checkout -b [name]
# 從當(dāng)前分支創(chuàng)建新分支并檢出
git checkout -b [old] [new]
# 檢出已存在的分支
git checkout [name]
# 檢出遠(yuǎn)程分支并創(chuàng)建本地跟蹤分支
git checkout --track [name]
# 檢出版本
git checkout v2.0
# 從遠(yuǎn)程分支develop創(chuàng)建新本地分支devel并檢出
git checkout -b devel origin/develop
# 檢出head版本的README文件(可用于修改錯誤回退)
git checkout -- README
# 合并遠(yuǎn)程master分支至當(dāng)前分支
git merge [name]
# 合并提交的修改
git cherry-pick [name]
# 將當(dāng)前分支push到遠(yuǎn)程master分支
git push origin [name]
# 把所有tag推送到遠(yuǎn)程倉庫
git push --tags
# 刪除分支(本分支修改已合并到其他分支)
git branch -d [name]
# 強(qiáng)制刪除分支
git branch -D [name]
推送/拉取
git pull
# git允許拉取不關(guān)聯(lián)的歷史代碼
git pull origin xxxx --allow-unrelated-histories
# git允許推送不關(guān)聯(lián)的歷史代碼
git push origin xxxx --allow-unrelated-histories
Log 美化
git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
查看個人代碼量
[email] 替換成你的提交與郵箱
git log --author="[email]" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -;
查看整個項目代碼量
git log --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }';