Git Log

Git log

1
2
3
4
git log --merges --after="2022-10-13" --oneline --decorate
git log --after="2022-10-13" --oneline --decorate

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative --all --after '10-13-2022' --merges

查看历史版本记录–指定显示条数

同时,与git log相同的是,git reflog也提供了控制显示条数的选项:

命令:git reflog -n

1、获取本分支合入指定分支的commitId

有些时候需要解析分支,tag,或者其他对于提交的间接引用。对于这种情况,你可以使用git rev-parse命令。下面的命令返回指向development分支的提交哈希串。

1
git rev-parse development

这对于编写只接受提交ID作为参数的自定义脚本非常有用。你可以使用git rev-parse命令来标准化脚本的输入,进而进入对于提交的统一处理。这就避免了脚本用户需要手动解析提交的引用。

二、获取commitId的信息

1、获取commitId的提交信息

想要将此哈希串作为参数传递给其他Git命令,只需要提供足够长度的字符串就可以了。比如说,你可以通过下面的命令来传入上面的哈希串,以便使用git show命令查看那次提交的具体内容。

1
2
3
git show 0c708f

git show -s --oneline 3d21461a7ef205ed0cee0baf45e95e782f4e84af

2、获取commitId的根源远程分支

①、获取有哪些远程分支里已经合入了commitId

1
git branch --contains eb0633b76925041f84b592a2e261e0b8537953f7 -r # -r标识远程分支

②、第一个合入commitId的远程分支,即为commitId的根源分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
branchResultForFisrtCommit=$(git branch --contains "${firstCommitId}" -r)
echo "${branchResultForFisrtCommit}"

branchArrayForFisrtCommit=(${branchResultForFisrtCommit})
branchCountForFisrtCommit=${#branchArrayForFisrtCommit[@]}
#echo "branchCountForFisrtCommit=$branchCountForFisrtCommit"
#for ((i=0;i<branchCountForFisrtCommit;i+=1))
#{
# branchName=${branchArrayForFisrtCommit[i]}
# echo "branchName=${branchName}"
#}

echo "\n------下面开始获取firstCommitId:${firstCommitId}的提交所属的根源远程功能分支名------"
sourceBranchForFisrtCommit=${branchArrayForFisrtCommit[${branchCountForFisrtCommit}-1]}
echo "sourceBranchForFisrtCommit=${sourceBranchForFisrtCommit}"

Git Search

Git查看分支从哪个分支创建的

查看分支创建时间

1
git reflog show --date=iso <branch name>

举例如图:

查看Git分支从哪创建

最老的那条记录即可以看出是从哪创建出来的。

但有时候记录太多,滑动太长,可以直接使用如下命令,直接查看

1
git reflog dev_environment | grep "Created from"

如果是feature分支

1
git reflog show --date=iso feature/设备小程序

image-20220301145230642

Git项目管理

Git项目管理

一、Git统计提交代码量

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

git log --author=xxxxx --since=‘2023-01-18 00:00:00’ --until=‘2023-01-18 23:00:00’ --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 }’

git log 查询git的提交记录

–author=xxx 查询某一个用户的提交记录

–pretty=tformat: 控制显示的记录格式

–numstat 对增加和删除的行数进行统计 第一列显示的是增加的行数 第二列显示的是删除的行数

–since 需要统计的开始时间

–until 需要统计的结束时间

实操:

1
2
3
4
5
6
7
8
9
10
# 常量形式
git log --author="qian" --since='2023-02-18 00:00:00' --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 }'

# 变量形式
authorName=qian
sincedate='2023-02-18 00:00:00'
git log --author="$authorName" --since="$sincedate" --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 }'

# 增加统计多少个文件
git log --author="$authorName" --since="$sincedate" --pretty=tformat: --numstat | awk '/./ { add += $1; subs += $2; loc += $1 - $2 } END { printf "modified files: %s, added lines: %s, removed lines: %s, total lines: %s\n", NR, add, subs, loc }'