Git撤销详解

Git
由于git存在工作目录、暂存区、版本库。因此,git提供了几条命令用于将文件从不同的区撤销到另一个区中。对曾经做过的事情进行反悔操作。

由于git存在工作目录、暂存区、版本库。因此,git提供了几条命令用于将文件从不同的区撤销到另一个区中。对曾经做过的事情进行反悔操作。撤销流程如下图:

Git撤销之从工作目录撤销

【注意】

1、git checkout 撤销本地工作区的修改,用远程库中的文件替换本地修改过的文件。

2、git reset HEAD 将暂存区文件撤销到本地工作区。

3、git reset --hard 将版本库中的文件直接撤销到某个版本。

git checkout/git stash(工作目录撤销)

我们使用“git checkout”命令可以将我们本地工作区中的未提交到暂存区的文件进行撤销操作。其实,就是重新从远程库中将文件的原始版本checkout下来,覆盖本地版本。也就起到了撤销操作,实例如下:

(1)假如我们在“test.txt”文件中添加了一行数据。然后我们使用“git diff”语句进行查看,如下图:

Git撤销之从工作目录撤销

注意:git diff默认是对工作区文件进行比较。

(2)我们使用“git checkout”checkout新文件来覆盖本地工作区旧的文件,进行撤销。如下图:

Git撤销之从工作目录撤销

(3)再次使用“git diff”查看文件的修改详情。如下图:

Git撤销之从工作目录撤销

上图中,根本没有修改痕迹,说明已经回滚。

【注意】

使用git checkout是意见很危险的事情。假如我们对某个文件修改了一上午,然后下午感觉修改的有问题,于是就执行git checkout,文件被撤销。到了晚上,又想将上午修改的重现。此时,git checkout就无能为力了。此时,我们必须使用“git stash”(将修改的东西放到垃圾桶中,还可以通过apply找回)。

实例:修改test.txt文件,然后使用“git status”查看状态,如下图:

Git撤销之从工作目录撤销

使用“git stash”将我们修改后的内容撤销,如下图:

Git撤销之从工作目录撤销

然后使用“git stash apply”将撤销的内容找回来。如下图:

Git撤销之从工作目录撤销

 git reset HEAD(暂存区撤销)

实例:假如存在一个test.txt文件,我们往test.txt文件中添加一行信息。然后保存。使用git add添加到暂存区,然后在将test.txt从暂存区撤销。

(1)使用“git status”查看当前状态,如下:

Git撤销之从工作目录撤销

如上图,test.txt文件在工作区被修改过。可以使用“git add”进行提交到暂存区,也可使用“git checkout”撤销修改。

(2)使用“git add”将修改后的test.txt文件添加到git的暂存区,如下图:

Git撤销之从工作目录撤销

(3)再次使用“git status”查看git状态,显示test.txt已经存在于git的暂存区中了。如下图:

Git撤销之从工作目录撤销

(4)使用“git reset HEAD”将test.txt文件从暂存区中撤销。如下图:

Git撤销之从工作目录撤销

(5)撤销后的test.txt存在于当前本地工作区,可以使用“git status”查看仔细状态,如下图:

Git撤销之从工作目录撤销

注意:此时的状态又回到了(1)步了。

git reset--hard(版本库撤销)

使用“git reset --hard”可以回滚到指定的某个点。下面我们使用“git log”查看git的操作日志,然后我们准备将git回滚到commit编号为“570db27ea0147ebea27904f8152087a2bbe3d354”的地方。如下:

Git撤销之从工作目录撤销

上图中,“add file”就是我们要退回的点。需要将唯一编号得到。

使用“git reset --hard 唯一编号”的方式进行撤销,如下图:

Git撤销之从工作目录撤销

到此,你已经撤销成功了。

在使用“git status”查看一下git的状态。如下图:

Git撤销之从工作目录撤销

一个不注意小事情的人,永远不会成功大事业。——戴尔·卡耐基
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号