Git常用命令表

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 }' -
原文地址:https://www.cnblogs.com/kuliuheng/p/6682476.html