一、Git 的基本⽤用法
Git 是分布式的代码管理⼯工具,远程的代码管理是基于 SSH的,所以要使⽤用远程的 Git 则需要 SSH 的配置。
设置 Git 的 username 和 email,⽤用来显⽰示提交的作者信息:
$ git config --global user.name “duchaoqun"
$ git config --global user.email “duchaoqun@xxx.com"
$ git config --list 查看配置列表

二、⽣生成SSH密钥过程
$ ssh-keygen -t rsa -C “duchaoqun@xxx.com”

三、基本命令
git init #⽤用来初始化项⽬目
git clone url #⽤用来下载代码到本地
git add file #把⽂文件从modify区放到workspace区 git add .
git commit -m “***” #提交到本地仓库
git pull origin master #获取远端的master分⽀支上的代码 git push origin master #提交到远端的master分⽀支
git stash/apply #暂存
git tag –a x.x.x #打标签

四、分支操作
git branch branchname #创建分⽀支
git checkout branchname #切换分⽀支
git checkout -b branchname #创建并切换分⽀支 git branch/branch –r #查看远程分⽀支
git branch -d branchname #删除本地分⽀支
git push origin branchname
git push origin –delete branchname #删除远程分⽀支

五、Git 修改管理
git checkout -- README.md #放弃修改
git reset HEAD README.md #回退暂存区 git checkout branchname #切换分⽀支
git rm filename #删除⽂文件
git merge branchname #合并分⽀支
git commit –m ‘’ –i #冲突解决

六、Git ⽇日志分析
git log #查看所有提交的分⽀支
-p 按补丁格式显⽰示每个更新之间的差异。 -num
--stat 显⽰示每次更新的⽂文件修改统计信息。
--shortstat 只显⽰示 --stat 中最后的⾏行数修改添加移除统计。
--name-only 仅在提交信息后显⽰示已修改的⽂文件清单。
--name-status 显⽰示新增、修改、删除的⽂文件清单。
--abbrev-commit 仅显⽰示 SHA-1 的前⼏几个字符,⽽而⾮非所有的 40 个字符。 --relative-date 使⽤用较短的相对时间显⽰示(⽐比如,“2 weeks ago”)。 --graph 显⽰示 ASCII 图形表⽰示的分⽀支合并历史。
--pretty 使⽤用其他格式显⽰示历史提交信息。可⽤用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。
--author “提交⼈人”
--grep “” 搜索提交关键词
-n num 显⽰示近期提交的数量
-since, --after 仅显⽰示指定时间之后的提交。
--until, --before 仅显⽰示指定时间之前的提交。
--author 仅显⽰示指定作者相关的提交。
--committer 仅显⽰示指定提交者相关的提交。
来看⼀一个实际的例⼦子,如果要查看 Git 仓库中,2018 年 04 ⽉月期间,duchaoqun 提交的但未 合并的测试脚本(位于项⽬目的 t/ ⽬目录下的⽂文件),可以⽤用下⾯面的查询命令:
git log --pretty="%h - %s" --author=duchaoqun --since="2018-04-01" \ --before="2018-04-18" - -no-merges -- t/
git show commit #查看提交的⽇日志详情
git log --pretty=online ⽂文件名 #查看指定⽂文件提交的记录
git blame file_name #查看指定⽂文件、⽤用户修改记录、时间

两段常用配置:

    git config --global alias.lm  "log --no-merges --color --date=format:'%Y-%m-%d %H:%M:%S' 
--author='你的名字!自己修改!' 
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' 
--abbrev-commit"
    
    
    git config --global alias.lms  "log --no-merges --color --stat --date=format:'%Y-%m-%d %H:%M:%S' 
--author='你的名字!自己修改!' 
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' 
--abbrev-commit"
    
    
    git config --global alias.ls "log --no-merges --color --graph --date=format:'%Y-%m-%d %H:%M:%S' 
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' 
--abbrev-commit"
    
    
        git config --global alias.lss "log --no-merges --color --stat --graph 
    --date=format:'%Y-%m-%d %H:%M:%S' 
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit"