Git 常用命令和統計代碼量
摘要 分享Git日常操作中常用的命令,分享如何統計在項目中貢獻的代碼量。
??下面列出Git bash常用命令,并分享如何統計在項目中貢獻的代碼量。
-
git clone **(項目地址)
??克隆一個git項目到本地。將git項目拉取到本地時以url最后一個斜線后面的名稱命名并創建一個文件夾,如果想要指定文件夾名稱,可以由git clone [url] newname指定。
-
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的時候如果拋出如下異常,
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
-
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 早晨。
Buy me a coffee. ?Get red packets.
浙公網安備 33010602011771號