一、git工作区域

    1.工作目录

    2.暂存区  git add .

    3.本地仓库 git commit -m "注释"

    4.远程仓库 git push

    git add 计算文件的hash值,将文件放入暂存区和生成blob类型的git对象

    git commit 计算目录的hash值,生成tree类型和commit类型的git对象,commit保存的是工作目录文件的完整内容

二、git diff用法

    1.git diff  工作目录跟暂存区的差别

    2.git diff HEAD  工作目录跟本地仓库的差别

    3.git diff –cached  暂存区跟本地仓库的差别

三、git rm –cached 文件名   

    把文件从暂存区里删除,就是 删除git add 的操作

四、git ls-files -s  查看暂存区里面的内容

    100644 d6b7ef32c8478a48c3994dcadc86837f4371184d 0       storage/framework/cache/.gitignore

    100644 d6b7ef32c8478a48c3994dcadc86837f4371184d 0       storage/framework/sessions/.gitignore

    100644 d6b7ef32c8478a48c3994dcadc86837f4371184d 0       storage/framework/testing/.gitignore

五、git cat-file -p  d6b7ef32c8478 查看hash对应的内容

六、git log 查看commit 日志

    git log –oneline 查看简洁一行hash显示

    git log –oneline  –decorate  查看当前有哪些分支,并且分支所对应指向的commit

    git log –oneline  –decorate –all 查看所有的

    git log –oneline  –decorate –all –graph 查看所有的用图形化展示

    git config alias.logg "log –oneline  –decorate –all –graph"  提供的别名功能,git logg等于 git log –oneline  –decorate –all –graph

七、git 分支

    ll  .git/refs/heads/ 分支存储列表

    cat .git/refs/heads/master  分支存储的hash值

    git branch dev 创建dev分支 (其实后面省略了commithash  完整的是git branch dev d6b7ef32c84,基于commit建分支)

    git checkout dev 切换分支

    git checkout -b dev 创建dev分支并且切换到dev分支

    cat .git/HEAD 记录了当前的分支

八、git checkout  dev流程

    1. git 会取出dev里面对应的commit覆盖暂存区和工作目录

    2. git 会更新HEAD,也就是更新当前分支的切换

    git checkout .   git checkout –file 从暂存区里面覆盖工作区

    git checkout HEAD .   git checkout HEAD –file 从本地仓储 覆盖到暂存区和工作区

九、git stash

    1.git stash 把工作区和暂存区的改动放到一个其他地方

    2.git stash pop 把stash暂存的内容释放出来,应用stash 删除stash

    3.git stash list 查看暂存了哪些内容

    4.git stash show -p stash@[0]     唯一标示stash@[0]

    5.git stash apply stash@[0]   唯一标示stash@[0] 可以省略  应用stash,但是不删除

十、git merge (master)

    1.git merge dev  如果master是dev 历史提交的某一个,则走Fast-forward 快进式的

    2.git merge pro  如果master 不是pro 历史提交的某一个,则走recursive(三方合并方式)

    三方合并:1.当前分支的内容,2要合并的分支内容,3.共同祖先提交的一个内容

    3.git merge 冲突,解决,vim手动修改完,执行 git add,git commit

十一、git rebase(master)

    语法:git rebase –onto newbase start branch

    git rebase –onto master master dev (master分支里)  = git rebase master (进入dev分支里)

    执行不走

    1.git checkout dev

    2.git rebase master

    3.git checkout master

    4.git merge dev

    git rebase –onto master master dev

    执行的步骤:

    1.git checkout dev

    2.计算dev 和 master的差值

    3.重置分支 git reset –hard  把dev 分支重置到newbase master分支commit上

    4.应用集合到当前分支 dev

    最后手动执行 1.git checkout master, 2. git merge dev,master 就包含dev代码