1. 撤销本地未提交commit
场景描述:
1、本地修改了一堆文件
2、git add / git commit 很高兴的将代码提交到本地仓库了
3、打算git push的时候,发现不小心添加了不想要提交的文件
4、查看git log已经产生了一条git commit记录
5、接下来就开始撤销
开始撤销commit记录
git log 查看当前分支的历史记录
2、找到你想恢复到的ID,然后 git reset --soft 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的时候勾选Amend
3、填写新的msg 然后commit
4、查看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、开发分支上有多个commit
2、本次迭代只需要上其中的某一个commit
3、需要将这个commit合并到test分支
处理
1、dev分支git log找到那个commit的SHA-1 校验和 如(62a521)
2、切换到test分支
3、git cherry-pick 62a521
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。