关于git reset (回退)

关于git reset (回退)

  1. 未提交

    1. 在工作区做了修改,但未执行git add. 到暂存区

    2. 已经git add .提交到暂存区,但未执行commit 提交到本地仓库

      这时候回退用git reset --hard 将删除所有痕迹

      用git reset --soft 回退到暂存区并保留修改

  2. 已提交未推送 (已经add,commit 但未push 到远程仓库)

  3. 上个版本回退,执行git reset hard commit_id(commit_id是倒数第二个)

  4. 回退到指定版本 ,git reset --hard <commit_id>

  5. 已推送

  6. git reset --hard commit_id

  7. git push -f

总结:
未commit前,直接git reset。
提交,用git reset 加版本号
push推送加push -f

已经推送到远程仓库的,git reset 回退之后,千万别git pull ,否则之前的git reset就白做了,这个时候本地也是没有修改的文件,如果git push 将会报下面的错误,这个时候要强制推送 git push -f

hint: Updates were rejected because the tip of your current branch is behind

hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

1、git reset --mixed 版本号 :此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息

本地工作目录内容以及暂存区内容保留

2、git reset --soft 版本号:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可

本地工作目录内容以及暂存区内容全部回退至某一个版本

3、git reset --hard 版本号:彻底回退到某个版本,本地的源码也会变为某个版本的内容

posted @ 2022-04-21 23:53  张尊娟  阅读(482)  评论(0编辑  收藏  举报