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