Git 常用命令 --- git reset命令

git reset 的作用为:将文件从暂存区回退到工作区;版本回退。

1. git reset HEAD filename

回退文件,将文件从暂存区回退到工作区。也可以使用 git reset filename。

2. git reset HEAD^

回退版本,一个^表示一个版本,可以多个,另外也可以使用 git reset HEAD~n这种形式。

如果HEAD指针指向的是master分支,那么HEAD还可以换成master;

如果知道特定的commit-id,那么还可以直接使用 git reset commit-id;

如果不加参数,实际上使用的是默认的参数mixed。

我们可以使用git log -3来查看最近三次的提交,形如 git log -n ,n就是想要输出的个数,可以看到commit-id,author,date等信息。

3. soft参数:git reset --soft HEAD~1

表示将版本库软回退1个版本,软回退表示将本地版本库的头指针全部重置到指定版本,且将这次提交之后的所有变更都移动到暂存区。

4. 默认的mixed参数:git reset HEAD~1

表示将版本库回退1个版本,将本地版本库的头指针全部重置到指定版本,且会重置暂存区,即这次提交之后的所有变更都移动到未暂存阶段。

5. hard参数:git reset --hard HEAD~1

表示将版本库回退1个版本,但是不仅仅是将本地版本库的头指针全部重置到指定版本,也会重置暂存区,并且会将工作区代码也回退到这个版本。

注意:soft参数与默认参数都不会修改工作区代码,只有hard参数才会修改工作区代码。

6. git reset 配合 git commit 追加提交

什么时候会用到追加提交,追加提交有什么优点?

1)对未merge的版本库中的提交不满意,希望修改其中的某些信息,如代码,如提交描述等,可以使用git commit --amend进行追加提交,优点是不会产生新的commit-id 

2)修改方法:如果想修改的不是最新一版的提交,那么可以通过git reset --hard HEAD~n将版本回退到需要的那版,如果想修改代码,那么直接在工作区进行代码修改,修改完之后git add到暂存区而不必再git pull,而如果是修改其他信息,那么可以直接使用git commit --amend进行追加提交,git commit --amend命令会打开一个编辑器,可以修改其中的信息,如果修改了代码而不修改其他信息,则直接 Ctrl + X离开编辑器,再git push推送到远程服务器,如果也修改了其他信息,那么需要先使用Ctrl + M写入信息,再Ctrl + X离开编辑器,再推送。

7. git reset -h | git reset --help 

查看帮助

相关推荐