#@date: 2014-05-04
#@author: gerui
#@email: forgerui@gmail.com
一、git reset的使用
-
今天修改了代码,就
git add ./
,添加到提交缓存中,但是突然发现不对,不想提交了,想回到未添加缓存的情况,这篇博客给出了解决方法,很简单:git reset .
-
之后继续看这篇博客,又学习到了不少撤销操作的知识。
-
git reset HEAD
可以撤销当前版本内的修改,即add到缓存的东西,撤销的提交文件为已修改未缓存。这里git reset HEAD~1
撤销一次提交操作,如果改为git reset HEAD~2
则是撤销两次提交操作。 -
git reset --soft HEAD
,这样的操作会使提交的文件设为已修改已缓存。 -
git reset --hard HEAD
,这个操作会使提交的文件删除修改,回归到未修改前的状态,这个操作之后,使用git status
命令查看没有变动内容。 -
可以通过以下方式在别的分支tmp上开发不成熟的功能。如下面,你先在master分支上提交了两个版本的内容,但发现这个功能不成熟,不能提交到master,所以你把现在的开发进度放到tmp分支(1),并回滚master分支上的两个提交(2),最后切换到tmp分支继续开发新功能(3)。
git branch tmp (1) git reset --hard HEAD~2 (2) git checkout tmp (3)
-
git checkout -- a.txt
可以将a.txt改为未修改之前的内容,这是个不可逆过程,撤销之后就不可恢复。 -
git reflog
可以记录每次操作,可以使用git reset --hard ea873cf
去回退到指定的位置。