Featured image of post git回退版本

git回退版本

git回退版本

git的4个区

  • 工作区(Working Area) 相当于工作空间的目录,即代码的存放位置

  • 暂存区(Stage) 也称为 index ,用来跟踪已暂存文件,一般存在 .git 下的 index 文件,所以有时也称暂存区为索引。

  • 本地仓库(Local Repository)

  • 远程仓库(Remote Repository)

git文件的5种状态

  • 未修改(Origin)
  • 已修改(Modified)
  • 已暂存(Staged)
  • 已提交(Committed)
  • 已推送(Pushed)

git区和状态

  • 工作区中文件的初始状态是 未修改,当我们修改文件后,其状态变为 已修改git diff 命令可以查看已修改但未暂存的文件。(git diff后输入 q 可以退出)
  • 通过 git add 命令可以把已修改的文件添加到暂存区git diff --cached 可以查看已暂存但未提交的文件。
  • 通过 git commit 将代码提交到本地仓库git diff [本地分支] [远程分支] 可以查看已提交本地,但未推送到远程分支的文件。
  • 通过 git push 命令将本地分支推送到远程分支。

回退相关命令

git reset 命令

git reset 是进行回退的具体命令,参数介绍如下

  • --soft: 仅仅将头指针恢复,已经 add 的暂存区及工作空间的文件修改不变。
  • --mixed: 将头指针恢复,已经 add 的暂存区也会恢复 ,工作空间的代码修改不变。
  • --hard: 头指针、暂存区和工作空间的修改都会恢复。

git log 命令

git log 命令查看git的提交记录,但无法查看已经删除的记录。

git reflog 命令

git reflog 命令可以查看所有分支的所有操作记录(包括commit和已被删除的commit记录)

回退操作

回退操作命令

  • 将已修改或暂存但未提交的文件回退: git reset --hard
  • 将已提交未推送的版本回退: git reset --hard origin/master
  • 将已提交且推送的版本回退:
    • 回退到某个版本:git reset --hard <版本号>
    • 将回退的版本强制推送到远程仓库:git push -f

--hard 可以替换为其他恢复等级,一般使用 --soft,这样修改的内容不会丢失

版本号可以使用 git loggit reflog 查看,如 git reset --hard 811aesfi8

git reset --hard <版本号> 也可以替换为 git reset --hard HEAD

  • 回退到当前版本:git reset --hard HEAD
  • 回退到上一个版本:git reset --hard HEAD^
  • 回退到上两个版本:git reset --hard HEAD^^
  • 回退到上三个版本:git reset --hard HEAD^^^
  • 回退到上十个版本:git reset --hard HEAD~10

git 远程覆盖本地

可以执行如下命令将远程仓库的代码直接覆盖本地仓库

  • git fetch –all
  • git reset –hard origin/main
  • git pull

git fetch 是下载远程仓库的内容,不做任务的合并
git resetHEAD 指向刚刚下载的最新版本

参考:
https://blog.csdn.net/qing040513/article/details/109150075 https://blog.csdn.net/gercke/article/details/119085963

Licensed under CC BY-NC-SA 4.0
Built with Hugo
主题 StackJimmy 设计