摘要 分享Git日常操作中常用的命令,分享如何統計在項目中貢獻的代碼量。
下面列出Git bash常用命令。
1. git clone **(項目地址)
克隆一個git項目到本地,將git項目拉取到本地
2. git status
查看文件狀態,列出當前目錄沒有被git管理,以及被修改過還未提交的文件
3. git add *
將我們提交的文件添加到索引庫中(添加到緩沖區),*可以是路徑也可以是.符號,git add . 代表將當前目錄下的所有文件都添加到索引庫中,如果指定路徑則代表將制定路徑的文件添加到索引庫中。
4. git commit -m "備注"
將文件推送到本地倉庫中,-m 后可以填寫此次提交的備注如git commit -m "提交刪除功能代碼",那么在git項目中的提交記錄里面就能看見你的推送備注。這一步僅僅是放在緩沖區中,還未真正提交代碼
5. git push origin 分支名
這一步才是推送代碼推送時需要跟分支名,表示需要將代碼推送至某個分支.如git push origin dev表示你要講代碼推送至dev分支。
6. git pull
更新當前分支的代碼,獲取最新的代碼
7. git checkout 分支名
從當前分支切換至另一個分支
8. git merge 分支名
當前分支合並其他分支。
9. 提交被忽略的文件
執行$ git add src/XXX的時候如果拋出如下異常,
| The following paths are ignored by one of your .gitignore files:src/XXX Use -f if you really want to add them. |
提示提交的時候,需要加 –f。使用如下命令即可解決:
| $ git add -f src/XXX |
接下來分享一下統計代碼量的Git命令。為啥會提到分析 Git 日志來統計代碼量這個功能呢?
一個是統計工作量,貢獻量的時候 —— 這一看就是要發獎金!另一個是統計自己代碼量的時候 —— 十有八九是准備跳槽了。
哈哈,言歸正傳。先介紹在哪統計。
- 打開Git Bash;
- 切換到你工程所在的目錄;
- 執行滿足如下需求的命令即可。
指定用戶名和起止日期
git log --since="2018-03-01" --before="2019-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 }'
| added lines: 15909 removed lines : 6359 total lines: 9550 |
直接復制粘貼即可,username換成你的用戶名,【since="2018-03-01" --before="2019-01-04"】中的日期換成你想要的日期。執行后會輸出在當前項目內,指定用戶名的用戶的代碼量統計信息,示例如下:
統計所有用戶的行數信息
它掃描了當前分支的每個文件,然后輸出每個人的代碼增刪行數信息。
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";}'
