声明:本文不是完全原创,博客内容基本上出于其他人的博客,也有部分自己实操的理解。
ps:如果不是选成转载文章需要填原文链接,我也不想弄成原创,原文那么多怎么找的过来。
git rebase: 变基,commit合并
使用:
step1
git rebase -i HEAD~{最新提交记录以下多少行以内}
step2
编辑器指定保留commit(pick/p)和被合并commit(squash/s),弹出的编辑页面会有英文说明,可以自行研究。
step3
成功后会继续弹出编辑器,输入合并后的commit 名称
step4
git push (-f)
如果rebase更改的提交记录在本地可以不加-f,如果在远程仓库,需要加-f指定强制更改,但是这样会影响别人的分支记录(如果有的话),所以我一般是用于自己拉的分支在merge之前合并所有提交记录。如果有更好的方法欢迎指出。
git checkout:检出,创建/切换分支
使用1:切换到本地分支xxx
git checkout <branchname>
使用2:创建本地分支
git checkout <branchname>
使用3:以远程分支为源创建本地分支
git checkout -b <branchname> <remote_branchname>
git branch:分支,查看本地/远程分支 列表,删除本地分支
使用1:查看本地分支
git branch
前面带*的表示当前选中分支
使用2:查看远程分支
git branch -a
使用3:删除本地分支,
git branch -d <branchname>
下面是比较杂乱的命令,有能比较系统的归纳的会更新到上面:
git 拉取更新远程分支列表:
git remote update origin --prune
犯懒了,直接贴上用得上的博客地址吧
git使用情景2:commit之后,想撤销commit:
https://blog.csdn.net/w958796636/article/details/53611133
统计所有人代码行数的命令
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat -- . ":(exclude)xxxxx" | grep "\(source/nuwa*.*\)$" | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done
排除某文件夹下的提交:
这是git 支持的命令
-- . ":(exclude)path"
path 格式:XXX/XXX 从项目根目录开始写
过滤文件格式:
这是linux的管道过滤
grep "\(filter)$"
filter格式: 以 \ 符号分割,支持两种格式
1、文件格式过滤: .fileType
2、文件路径过滤:xxx/xxx*.*从项目根目录开始写
例子
grep "\(.cpp\.h\source/common*.*)$"
这句意思就是筛选出 source/common目录下的.cpp和.h文件的代码提交行数
git使用有所得时再更新!!