1. 撤销本地未提交commit

场景形容:

1、本地批改了一堆文件2、git add / git commit 很快乐的将代码提交到本地仓库了3、打算git push的时候,发现不小心增加了不想要提交的文件4、查看git log曾经产生了一条git commit记录5、接下来就开始撤销

开始撤销commit记录

git log 查看以后分支的历史记录2、找到你想复原到的ID,而后 git rest --mixed  ID  3、这样就复原到了提交之前的状态。被批改提交的文件会被寄存在暂存区中。

git reset 指令

git reset(--mixed) HEAD~1  head树回到上个版本,index树也回到上个版本回退一个版本,会将暂存区的内容和本地已提交的内容全副复原到未暂存的状态。git reset --hard HEAD~1  三棵树都回到上个版本回退一个版本,清空暂存区,将已提交的内容的版本复原到本地,本地的文件也将被复原的版本替换git reset --soft HEAD~1  head树回到上个版本回退一个版本,不清空暂存区,将已提交的内容复原到暂存区,不影响原来本地的文件(未提交的也不受影响)HEAD~1 回退到上个版本HEAD~3 回退到前三个版本(指向父节点的指针挪动三次)

2. git commit后发现msg写错或者少了提交几个文件

场景形容:

1、本地批改了一堆文件2、git add / git commit 很快乐的将代码提交到本地仓库了3、打算git push的时候,发现有局部代码未提交/msg写的不优雅

解决

1、把新的文件增加到暂存区2、git commit的时候勾选Amend3、填写新的msg 而后commit4、查看git log 发现只有新的这一次commit

3、以后分支工作一半,须要切换的新的分支进行工作

1. git stash 暂存区的文件储藏起来2. 切换分支3. 解决完新分支后回到之前的分支4. git stash apply 将储藏的文件从新利用5. git stash drop 0 移除刚刚储藏的文件

git stash 相干指令

git stash list 显示队列git stash apply [index] 将指定的储藏的文件从新利用git stash drop [index] 移除指定储藏的文件

4、 创立新分支,从指定拉取代码

1.创立新分支,个别从mater拉取2.git pull  origin  [branchName]3.push到新分支

5、reset 的原理

http://git-scm.com/book/zh/v2...

6、合并某个分支上的指定commit

场景形容

1、开发分支上有多个commit2、本次迭代只须要上其中的某一个commit3、须要将这个commit合并到test分支

解决

1、dev分支git log找到那个commit的SHA-1 校验和 如(62a521)2、切换到test分支3、git cherry-pick  62a521