一、追溯,查看提交历史。

git shortlog  #查看每个人提交的commit 备注,以及次数。

git log -graph 


好用的追责工具git blame。

它可以查看一个文件的每一行的提交记录,想知道这个文件的代码里面每一行是谁提交的都可以查得到。

git blame 【filename】  #显示文件的每一行的提交者。

#假如说现在有一个需求,想查看代码的第6行到第11行是谁提交的:

git blame [filename] -L [6],+[5]



二、在git仓库中搜索。

git grep   #在git仓库中以关键字的形式搜索文件,用法和linux系统命令的grep是一样的,下面是用法示例:

git grep [hellotest] #查找在git仓库中所有含有hello字符串的文件。

git grep -n [hellotest] #显示关键字所在文件的行号。

git grep -name-only [hellotest] # 只显示文件名。

git grep -c  [hellotest] #查看每个文件有多少个匹配。

and / or:

git grep -e [hello] --and -e [world]

git grep -e [hello] --or -e [world]


在指定tag中搜索:

git grep string [tag]


三、修改提交。

增补提交。

最后一次提交如果有问题,需要修改最后一次的提交,而不是从重新commit产生一个新的提交的话,就可以用--amend参数。

git commit --amend #不会生成新的commit,只修改最后一个commit。


撤销提交。

git revert [SHA1]#将原来的提交撤销。



四、版本回退。

git reset --mixed [SHA1] #将版本回退到工作区。

git reset --soft [SHA1] #将版本回退到暂存区。

git reset --hard [SHA] #回退后直接删除提交。


五、分支相关。

git branch [branchname]  #创建一个分支,默认从当前节点下创建一个分支。

git branch [branchname][SHA1] #如果想在指定节点下创建一个分支,那么后面只要跟上指定的 commit的SHA1值就可以了。

git branch -b [new_branchname] [old_branchname]  #在某个分支下再新建一个分支。

git branch -a #查看所有分支。

git branch --merged #查看已合并分支。

git branch --no-merged #查看未合并分支。


注意!!在切换分支的时候,需要保证工作区和暂存区的清洁!!

git checkout [branchname]


git branch -m [oldbranch] [newbranch] #分支重命名。

git branch -d [branchname]  #已合并的分支直接删除。

git branch -D [branchname]   #强制删除未合并的分支。


 

分支合并:

git checkout [brachname] #首先切换到要合并到的分支。(目的地)

git merge  [brachname] #将指定分支合并到当前分支。



三、远程仓库操作。

git clone repo [addr]  #直接从远程仓库克隆git仓库。

git remote add origin  [[email protected]:xxx/xxx.git] #添加远程仓库


git clone #本地master分支会跟踪远程仓库master分支。

git pull #自动拉取某个分支的更新。

git push 【远程仓库】 【分支】 #推送到远程仓库。


git remote -v #查看远程仓库信息。

git remote show origin 


远程分支提交:

git push origin [本地分支名]:[远程分支名]


删除一个远程分支:

git push origin  :[dev2] #删除远程分支dev2


将本地的一个分支和远程分支进行关联:

git checkout -b [localbranch] [mybranch]

----------------------------------------------------------未完待续