git checkout ,git restore和git reset 的区别

2,517 阅读2分钟

git checkout

切换与创建分支

git checkout <branch_name >: 切换分支

git switch <branch_name>: 切换分支

git checkout -b <branch_name>: 创建并切换至分支

git switch -c <branch_name>: 创建并切换至分支

git checkout -b <branch_name>origin/<branch_name>: 在本地创建和远程分支对应的分支,本地和远程分支的名称最好一致

还原工作区

git checkout –- <file_name>: 丢弃工作区的修改,并用最近一次的commit内容还原到当前工作区(对文件中内容的操作,无法对添加文件、删除文件起作用)

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

1、是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

2、是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commitgit add时的状态。

git checkout HEAD^ <file_name>: 将指定commit提交的内容(HEAD^表示上一个版本)还原到当前工作区

git checkout <branch_name> – <file_name>:  将指定分支的指定提交内容还原到当前分支工作区

git restore

git restore --staged  <file_name>: 将暂存区的修改重新放回工作区(包括对文件自身的操作,如添加文件、删除文件

git restore <file_name>:丢弃工作区的修改(包括对文件自身的操作,如添加文件、删除文件

git reset

git reset HEAD <file_name>: 丢弃暂存区的修改,重新放回工作区,会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(相当于撤销git add 操作,不影响上一次commit后对本地文件的修改) (包括对文件的操作,如添加文件、删除文件)

git reset –hard HEAD: 清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换(恢复到上一次commit后的状态,上一次commit后的修改也丢弃)

学习并转载于:blog.csdn.net/Sweet_19BaB…