删除远程分支
git push origin --del rzluan-orderchange/ndc_xml_api_v3
克隆指定分支到指定文件夹
git clone -b [branch_name] [git_url] [dir_path]
变更统计
git log --author=rzluan --after="2019-11-01 00:00:00" --before="2019-11-30 23:59:59" --name-only | grep '^src/*' | sort | uniq
git log --author=rzluan --after="2019-11-01 00:00:00" --before="2019-11-30 23:59:59" --numstat | grep "src" | awk '{a[$3]+=$1;b[$3]+=$2}END{for(j in a) print j,"代码变更"(a[j]+b[j])"行"}'
git log --author=rzluan --after="2019-11-01 00:00:00" --before="2019-11-30 23:59:59" --numstat | grep "src" | awk '{a[$3]+=($1+$2)}END{for(j in a) b+=a[j]} END{print "总行数",b}'
修改commit记录
修改提交时间:
git commit --amend --date="May 8 12:00:30 2020 +0800"
修改提交人信息:
git commit --amend --author "luanrzh luanrzh@qq.com"
强制推送至远程仓库:
git push <remote> <branch> -f
撤销commit记录
git reset HEAD
: 撤销commit,撤销暂存区,工作空间代码改动不变git reset --mixed HEAD^
: 同上git reset --soft HEAD^
: 撤销commit,暂存区不变,工作空间代码改动不变git reset --hard HEAD^
: 撤销commit,清空暂存区,清空工作空间代码改变git reset HEAD~n
: 撤销n次commitgit commit --amend
: 修改commit注释
清除所有commit记录
参见Git – Remove All Commits – Clear Git History (Local & Remote)
git checkout --orphan temp_branch # 切换到一个临时分支,该分支的状态和`git init`很像
# 在一步可以做一些特殊操作,如删除当前文件夹下所有文件、新增文件等等,后续新分支将会以此处的文件状态为准
git add -A # 提交工作区中所有文件变动,到临时分支暂存区
git commit -am "The first commit" # 提交暂存区中所有文件变动,到临时分支本地仓库
git branch -D main # 删除需要清除所有commit记录的分支
git branch -m main # 将当前临时分支修改成刚刚删掉的分支名
$ git push -f origin main # 推送到远程仓库(!!!危险操作!!!)