发布于:,更新于:

Git代码量统计常用命令

一、Git统计代码量

1.根据用户名时间段统计

1
2
3
git log --author="username" --since=2018-01-01 --until=2019-12-31 \
--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 }'

2.查看提交者排名前N位

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

3.提交数统计

1
git log --oneline | wc -l

4.根据用户名统计

1
2
3
git log --author="username" --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 }'

5.根据时间段统计

1
2
3
git log --since=2020-01-01 --until=2021-02-04 --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 }'

6.统计每个人的增删行数

1
2
3
4
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 ", \
add, subs, loc }' -; done

7.贡献者统计

1
git log --pretty='%aN' | sort -u | wc -l

8.根据时间段排除文件夹统计

1
2
3
git log --since=2021-01-28 --until=2021-02-03 --pretty=tformat: --numstat \
-- . ":(exclude)src/test" | awk '{ add += $1; subs += $2; loc += $1 + $2 } \
END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'
  • . “:(exclude)folderName” folderName指src/test文件夹,这里是相对路径

  • . “:(exclude)folderName1” “:(exclude)folderName2” 排除多个文件夹

  • . “:(exclude)folderName”也 可以用在其他的统计中;–前只能有一个空格,有多个空格识别不了

9.根据指定文件夹统计

1
2
3
git log --since=2021-06-24 --until=2021-06-30 --pretty=tformat: --numstat 
| grep src/test | gawk '{ add += $1; subs += $2; loc += $1 + $2 } END
{ printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'

src/test 指定src的test目录下

注意:增删也算统计的代码量就修改loc += $1 + $2

10.代码存量

1
find . -name *\.java  -exec wc -l  {} \; | awk '{s+=$1}END{print s}'

二、Git常用命令

git clone 项目地址

克隆一个git项目到本地,将git项目拉取到本地

git status

查看文件状态,列出当前目录没有被git管理,以及被修改过还未提交的文件

git add *

将我们提交的文件添加到索引库中(添加到缓冲区),*可以是路径也可以是.符号,git add . 代表将当前目录下的所有文件都添加到索引库中,如果指定路径则代表将制定路径的文件添加到索引库中。

git commit -m “备注”

将文件推送到本地仓库中,-m 后可以填写此次提交的备注如git commit -m “提交删除功能代码”,那么在git项目中的提交记录里面就能看见你的推送备注。这一步仅仅是放在缓冲区中,还未真正提交代码。

git push origin 分支名

这一步才是推送代码推送时需要跟分支名,表示需要将代码推送至某个分支.如git push origin dev表示你要讲代码推送至dev分支。

git pull

更新当前分支的代码,获取最新的代码。

git checkout 分支名

从当前分支切换至另一个分支。

git merge 分支名

当前分支合并其他分支。

git add src/XXX

提交被忽略的文件,如果抛出如下异常:

1
2
3
The following paths are ignored by one of your .gitignore files:src/XXX

Use -f if you really want to add them.

提示提交的时候,需要加 –f。使用如下命令即可解决:

1
git add -f src/XXX



本站由 [PengBin](/) 使用 [Stellar 1.26.3](https://github.com/xaoxuu/hexo-theme-stellar/tree/1.26.3) 主题创建。 本博客所有文章除特别声明外,均采用 [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) 许可协议,转载请注明出处。