1 常用Git场景参考
(1)如果希望某个文件或者文件夹保留在当前分支上,不要被合并操作更改,那么需要用到如下命令(这个方法我自测感觉不好使,不知道是不是我自己操作有误):
git config --global merge.ours.driver true # 创建自定义的merge echo "test_ignore.xml merge=ours" > .gitattributes # 在Git根目录创建.gitattributes配置文件,指定test_ignore.xml文件使用当前分支的,不要合并
(2)分支操作
git branch -D branch_name // 删除本地分支 git push origin :branch_name // 删除远程分支,origin后有空格 // 创建新分支new_branch并切换过去,如果没有指定from_branch则默认基于master分支创建 git checkout -b new_branch [from_branch]
// 将新创建的分支推送到远程服务器;但推送后并不能直接用git pull/push,还需要指定新分支与远程分支的关联 git push origin new_branch
// 将本地新分支关联到远程的同名分支上,可以直接使用git pull/push无需指定分支名 git branch --set-upstream-to=origin/new_branch newbranch
(3)放弃本地修改
git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态 git stash #把所有没有提交的修改暂存到stash里面。可用git stash pop回复。 git reset --hard HASH #返回到某个节点,不保留修改。 git reset --soft HASH #返回到某个节点。保留修改
(4)删除远程仓库中不存在(已删除)的本地分支
git fetch -p
(5)Tag
git tag // 打印所有Tag列表 git tag -l ‘v0.1.*’ // 搜索所有符合规则的Tag git tag TV7.10_light // 打一个轻量标签 git tag -a TV7.10_Released -m "Comments..." // 打一个附注标签,其中-a是annotated缩写指定标签类型,后附标签名,-m是标签说明会保存到Tag中 git show TV7.10_Released // 查看Tag版本信息 git checkout TV7.10_Released // 切换到一个Tag git tag -d TV7.10_Released // 删除一个Tag git push origin TV7.10_Released // 注意:git push默认是不会自动提交本地Tag的,需要明确写出来才行
2 Git命令高级用法
(1)统计git提交次数:展示所有提交次数的详情
git log | grep "^Author: " | awk '{print $2}' | sort | uniq -c | sort -k1,1nr
(2)统计指定开发者指定时间段内的提交次数
git log --author=liuheng.klh --since="2019-03-01" --no-merges | grep -e 'commit [a-zA-Z0-9]*' | wc -l
(3)统计提交行数:根据1展示出详情,可以填入username。将展示该用户增加行数,删减行数,剩余行数。
git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s ", add, subs, loc }' -