Git 版本回滚相关操作
回滚相关操作:(已经加入到了暂存区,或已经提交)
把当前版本回退到上一个版本,就可以使用git reset命令:
$ git reset --hard HEAD^
HEAD is now at e475afc add distributed
回退至上上个版本,可以使用git reset -- hard HEAD^^
当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
当我们需要制定回滚到哪个版本的时候,可以通过指定版本号进行回滚。
通过输入下面的指令,在按tab键则可以显示如下历史版本提示,然后进行选择想要回滚到的版本号进行回滚操作。
git reset —hard
当我们又想回到刚才撤销的那个版本的时候,我们可以通过
git reflog 指令查看到撤销之前的版本号。(Git提供了git reflog用来记录你的每一次命令)
然后通过git reset —hard 版本号
来回到撤销之前的那个版本。
现在总结一下:
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。
穿梭前,用git log
可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog
查看命令历史,以便确定要回到未来的哪个版本。
Git同样告诉我们,用命令git reset HEAD <file>
可以把暂存区的修改撤销掉(unstage),重新放回工作区。(注意这里的指令是 git reset HEAD … 不是git reset --hard )
关于工作区的修改撤销 git checkout — 需要撤销的文件
git checkout -- Object.java
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销
这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
关于git 文件删除的相关操作。
Git的删除操作是通过 git rm 文件名 进行操作的。执行该命令后会将文件删除:
然后我们还需要执行
git commit -m “删除version.txt文件”
将该操作进行提交。但我们想将删除的文件进行恢复操作时,可以使用
git checkout — 文件名
但是这里要注意,这个文件必须要是版本库里还有这个文件。
比如我们直接执行 rm 文件名(或右键文件选择删除)。这个时候则可以使用git checkout — 文件名 进行恢复。