如何使用git的reset功能重置代码
在我前面的文章中,介绍了如何删除不想要的commit,这里的功能 就是借助git reset --soft
https://www.cnblogs.com/zhaotianff/p/13860307.html
git reset的作用是将仓库重置为指定的commit
简单来说,执行git reset,会将指定commit前面所有的commit都重置。
但git reset这个操作仅限于本地,不会影响服务器上的commit
例如我有如下提交

commit 1 的commit id为 d93024409d3dd8f7af63faeddf5df9ef9cfdbd01
我们将commit 1进行reset,输入
1 git reset d93024409d3dd8f7af63faeddf5df9ef9cfdbd01
即可将分支头变成commit 1,如下所示

使用git reset进行重置时,主要有以下几种常用参数:
--soft
将分支重置,并将这些分支修改后的文件添加到索引文件中。
像平常我们提交时,需要先使用git add命令,将修改的文件添加到索引文件中,然后再调用git commit 进行提交。
还是以前面的分支为例,我们输入
1 git reset --soft d93024409d3dd8f7af63faeddf5df9ef9cfdbd01
然后再输入git status

可以看到文件是被索引状态,此时可以直接进行git commit操作
--mixed(默认选项)
将分支重置,但是不将这些分支修改后的文件添加到索引文件中
我们输入
1 git reset --mixed d93024409d3dd8f7af63faeddf5df9ef9cfdbd01
或者直接输入
1 git reset f4d46d217dc4f01ac2fe66038c5e8091cb369d57
然后再输入git status

可以看到文件并没有被索引 ,需要再调用git add <file> 才行执行git commit操作。
--hard
将分支重置,并且不保留这些分支修改的文件
我们输入
1 git reset --hard d93024409d3dd8f7af63faeddf5df9ef9cfdbd01
再输入git status

还有其它两种选项--merge和--keep,这里不做详细介绍。可以访问以下链接自行学习:
https://git-scm.com/docs/git-reset#Documentation/git-reset.txt---hard
我们在Visual Studio中对git reset功能进行演示。
首先创建三次提交,分别为commit 1、commit 2、commit 3。每次提交都增加一行代码。

点击查看所有提交

然后在commit 1上右键,选择重置->保留更改

在左侧的Git更改里看到commit 2和commit 3修改的文件


注意:为什么Visual Studio中没有--soft选项,因为在Visual Studio中,可以直接通过按钮进行提交并推送,所以省略了--soft选项。

当我们右键执行重置->删除更改时

Visual Studio会有一个提示

我们点击 是后,可以看到在左侧的列表并不会看到任何修改,因为git reset --hard不会保留这些修改。


浙公网安备 33010602011771号