Git 常用命令和统计代码量

摘要 分享Git日常操作中常用的命令,分享如何统计在项目中贡献的代码量。

  下面列出Git bash常用命令,并分享如何统计在项目中贡献的代码量。

  1. git clone **(项目地址)

  克隆一个git项目到本地。将git项目拉取到本地时以url最后一个斜线后面的名称命名并创建一个文件夹,如果想要指定文件夹名称,可以由git clone [url] newname指定。

  1. git status

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

  1. git add *

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

  1. git commit -m "备注"

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

  1. git push origin 分支名

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

  1. git pull

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

  1. git checkout 分支名

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

  1. git merge 分支名

  当前分支合并其他分支。

  1. 提交被忽略的文件

  执行$ git add src/XXX的时候如果抛出如下异常,

The following paths are ignored by one of your .gitignore files:src/XXXUse -f if you really want to add them.

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

$ git add -f src/XXX 
  1. Git 代码量统计命令

  接下来分享一下统计代码量的****Git命令。**为啥会提到分析 Git 日志来统计代码量这个功能呢? 一个是统计工作量,贡献量的时候 —— 这一看就是要发奖金!另一个是统计自己代码量的时候 —— 十有八九是准备跳槽了。哈哈,言归正传,介绍在哪统计。

打开Git Bash;

切换到你工程所在的目录;

执行满足如下需求的命令即可。

指定用户名和起止日期

git log --since="2021-03-01" --before="2022-01-09" --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 }'

  直接复制粘贴即可,username换成你的用户名,【since="2021-03-01" --before="2022-01-09"】中的日期换成你想要的日期。执行后会输出在当前项目内,指定用户名的用户的代码量统计信息,示例如下:

added lines: 15909 removed lines : 6359 total lines: 9550

统计所有用户的行数信息

  它扫描了当前分支的每个文件,然后输出每个人的代码增删行数信息。

git log --shortstat --pretty="%cE" | sed 's/\(.*\)@.*/\1/' | grep -v "^$" | awk 'BEGIN { line=""; } !/^ / { if (line=="" || !match(line, $0)) {line = $0 "," line }} /^ / { print line " # " $0; line=""}' | sort | sed -E 's/# //;s/ files? changed,//;s/([0-9]+) ([0-9]+ deletion)/\1 0 insertions\(+\), \2/;s/\(\+\)$/\(\+\), 0 deletions\(-\)/;s/insertions?\(\+\), //;s/ deletions?\(-\)//' | awk 'BEGIN {name=""; files=0; insertions=0; deletions=0;} {if ($1 != name && name != "") { print name ": " files " files changed, " insertions " insertions(+), " deletions " deletions(-), " insertions-deletions " net"; files=0; insertions=0; deletions=0; name=$1; } name=$1; files+=$2; insertions+=$3; deletions+=$4} END {print name ": " files " files changed, " insertions " insertions(+), " deletions " deletions(-), " insertions-deletions " net";}'

如下统计命令不区分用户:

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 }'

  对于Wiener的以上的话题,大家有什么自己的独特见解呢?欢迎在下方评论区留言!

  更新于2022-03 早晨。

posted @ 2019-01-08 10:01  楼兰胡杨  阅读(12395)  评论(4编辑  收藏  举报