git日常(二)----常用git 命令

git日常(二)----常用git 命令

十一月 01, 2018

version 0.2

[TOC]

1. 日志类

显示每次更新的文件修改统计信息

git log --stat

显示最近两次提交

git log -p -2

根据自定义格式过滤日志

git log --pretty=format:"%h - %an, %ar : %s"

使用ASCII表示简单git图

git log --pretty=format:"%h %s" --graph

显示最近一周的提交

git log --since=1.weeks

显示指定作者的提交

git log --author=xuxin

显示指定区间段的提交

git log --author=xuxin --since="2018-04-01" --before="2018-10-01"

显示提交但未合并的信息

git log --pretty="%h - %s" --author=xuxin --since="2018-04-01" \ --before="2018-10-08" --no-merges -- t/

2. 检索类

根据commit信息搜索提交

git log -g --grep="KEYWORD"
git log --all --grep='KEYWORD'

查找有关的关键字

git log --all --pretty=\"format:%Cgreen%H %Cblue%s\n%b%Creset\" --name-status --grep KEYWORD

根据CommitID查看所属分支

git branch -a --contains CommitID

3. 操作类

(未使用add)放弃本地所有更改

git checkout .

撤销特定文件 (注意-- )

git checkout -- filepathname

(已经使用add)放弃本地所有更改

git reset --hard HEAD^

回退到任意版本

git reset --hard CommitID

修改错误的提交

git commit --amend

查看某人提交的代码

git log --author="xuxin" --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 --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --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 }' -; done

查看提交者 前五名

git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5

4. 注:

添加到全局变量中的代码(注意author修改)

git config --global alias.lm "log --no-merges --color --date=format:'%Y-%m-%d %H:%M:%S' --author='xuxin' --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit"

git config --global alias.lms "log --no-merges --color --stat --date=format:'%Y-%m-%d %H:%M:%S' --author='xuxin' --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit"

git config --global alias.ls "log --no-merges --color --graph --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit"

git config --global alias.lss "log --no-merges --color --stat --graph --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit"

git config --global alias.find "log --all --pretty=\"format:%Cred%cd\n%Cgreen%H %Cblue%s\n%b%Creset\" --name-status --date=format:'%Y-%m-%d %H:%M:%S' --grep"

gitconfig中代码:

[alias] lm = log --no-merges --color --date=format:'%Y-%m-%d %H:%M:%S' --author='xuxin' --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit find = log --all --pretty=\"format:%Cred%cd\n%Cgreen%H %Cblue%s\n%b%Creset\" --name-status --date=format:'%Y-%m-%d %H:%M:%S' --grep lss = log --no-merges --color --stat --graph --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit lms = log --no-merges --color --stat --date=format:'%Y-%m-%d %H:%M:%S' --author='xuxin' --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit ls = log --no-merges --color --graph --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit

4.2 参考:

4.3 更新说明:

版本 时间 说明
version 0.1 2018年10月09日15:45:06 初版
version 0.2 2018年10月24日15:51:51 添加代码统计命令