nihaogirl 发表于 2018-1-15 09:14:34

Git reset 常见用法

  Git reset  
  1. 文件从暂存区回退到工作区 2. 版本回退     
  1.1 git reset HEAD filename :回退文件,将文件从暂存区回退到工作区  //也可以使用 git reset filename
https://images2015.cnblogs.com/blog/1048430/201610/1048430-20161029110400937-199796711.png
  1.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等信息
https://images2015.cnblogs.com/blog/1048430/201610/1048430-20161029112233984-876157163.png
  下面介绍三种参数:
  (1) soft 参数:git reset --soft HEAD~1 意为将版本库软回退1个版本,所谓软回退表示将本地版本库的头指针全部重置到指定版本,且将这次提交之后的所有变更都移动到暂存区
https://images2015.cnblogs.com/blog/1048430/201610/1048430-20161029112643500-722731949.png
  (2) 默认的mixed参数:git reset HEAD~1 意为将版本库回退1个版本,将本地版本库的头指针全部重置到指定版本,且会重置暂存区,即这次提交之后的所有变更都移动到未暂存阶段
https://images2015.cnblogs.com/blog/1048430/201610/1048430-20161029113122406-130630115.png
  (3) hard参数:git reset --hard HEAD~1 意为将版本库回退1个版本,但是不仅仅是将本地版本库的头指针全部重置到指定版本,也会重置暂存区,并且会将工作区代码也回退到这个版本                                                             https://images2015.cnblogs.com/blog/1048430/201610/1048430-20161029113523640-2090367334.png
  了解这三个参数已足够我们日常开发使用了, 注意soft参数与默认参数都不会修改工作区代码,只有hard参数才会修改工作区代码。
  1.3 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离开编辑器,再推送。
  1.4 查看帮助
  git reset -h | git reset --help
页: [1]
查看完整版本: Git reset 常见用法