ThatManK Mobile Article
基础-02
Git 基础-02
- 高级命令
- 每个提交在一行内显示
git log --oneline
- 日志搜索
git log --all --grep='XXX'
- 获取某人的提交日志
git log --author="XXX"
- 此次提交的 Commit 日志与上次 Commit 日志合并
git commit --amend -m "上次的-m内容将被我覆盖"
- 在上次提交中附加一些内容, 保持提交日志不变
git add . && git commit --amend --no-edit
- 不做任务改动空提交
git commit --allow-empty -m "这是一次空提交"
- 别名
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.st status
$ git config --global alias.lg log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
- 放弃本地修改, 回复原状(未 add 状态)
git checkout -- .
- 将所有 add 的文件移出缓存区
$ git reset HEAD .
- 回退到上一个版本(本地 commit 之后未 push)
git reset --hard HEAD^
- 回退到指定版本
git reset --hard CommitID
- 打 tag
git tag 1.1.8
- 切换到 tag 版本
git checkout 1.1.8
- 统计代码增加的行数
git log --stat|perl -ne 'END { print $c } $c += $1 if /(\d+) insertions/'
- 精确的代码行数修改数量
git log --author="$(git config --get user.name)" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 + $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }'
- 统计某位开发者有效的代码行数
git log --author="张三" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "增加的行数:%s 删除的行数:%s 总行数: %s\n",add,subs,loc }'
- 统计某人的 commit 数量
git log --author="张三" --oneline | wc -l
- 统计一段时间内代码的变化
git log --pretty=tformat: --since ==2016-01-01 --until=2016-08-08 --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 + $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }'
- 提交排名 top10
git log --pretty=%aN | sort | uniq -c | sort -k1 -n -r | head -n 10
- 统计有多少代码贡献者
git log --pretty=%aN | sort -u | wc -l
- 分支操作
- 跳到之前的分支
git checkout -
- 拉取远程最新代码并强制清除本地所有改动, 与远程保持一致
$ git fetch origin
$ git checkout master
$ git reset --hard origin/master
- 跳到之前的分支
git checkout -
- 比较两个分支
git diff master b1
- 删除远程分支
git push origin --delete REMOTE_BRANCH