7.git回退版本

发布时间 2023-10-16 17:01:34作者: 贝壳里的星海

git回退版本

放弃本地修改

没有添加到暂存区

# 放弃工作区的文件
git checkout – filepathname

git checkout .   

已提交到了暂存区,想放弃暂存区里的提交

git reset HEAD filepathname (比如: git reset HEAD readme.md)
git reset HEAD .

git reset --hard HASH  # 返回到当前版本,不保留修改。
git reset --soft HASH  # 返回到当前版本,保留修改

回退版本(已提交代码)

谨慎使用 –-hard 参数,它会删除回退点之前的所有信息。

git reset --hard HEAD^     #返回到上次提交版本
git reset --hard head     #当前版本
git reset --hard HEAD^    #回退到上一个版本
git reset --hard 76eac54  #回退到指定版本

soft.mixed.hard区别

soft、mixed和hard是git中三种不同的回滚方式。

soft方式: 本地库的指针移动了,已经add的暂存区以及工作空间的所有东西都不变,保留修改

mixed方式:默认的方式,HEAD指针回滚到指定的提交id,重置暂存区, 工作区不动,工作区保留修改

hard方式: HEAD指针回滚到指定的提交id ,本地仓库、暂存区、工作区都会回滚,本地的代码也会变为某个版本的内容.

git log查看

git log : 查看详细历史记录,按提交时间倒叙排列,包含提交时间,提交作者,提交备注以及提交的hash值
git log --pretty=oneline : 格式化log形式,每条log只有一行,只包含 完整的hash值 和 提交的备注
git log --oneline : 格式化log形式,每条log只有一行,只包含 短hash值 和 提交的备注

【注】2和3的区别就是 展示的hash值的长短,短hash就是完整hash截取了前7位的表示形式。

git log -n 3 : 只展示最新的 几条 日志,-n 后面的数字就表示 要展示的条数;
git log --graph : 会展示历史提交的分支路线;

其他说明

git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态
git stash #把所有没有提交的修改暂存到stash里面。可用git stash pop回复。

git reset --hard HASH #返回到某个节点,不保留修改,已有的改动会丢失。
git reset --soft HASH #返回到某个节点, 保留修改,已有的改动会保留,在未提交中,git status或git diff可看。

git clean -df #返回到某个节点,(未跟踪文件的删除)
git clean 参数
    -n 不实际删除,只是进行演练,展示将要进行的操作,有哪些文件将要被删除。(可先使用该命令参数,然后再决定是否执行)
    -f 删除文件
    -i 显示将要删除的文件
    -d 递归删除目录及文件(未跟踪的)
    -q 仅显示错误,成功删除的文件不显示


注:
git reset 删除的是已跟踪的文件,将已commit的回退。
git clean 删除的是未跟踪的文件

参考资料

https://blog.csdn.net/qq_39505245/article/details/119788832

https://blog.csdn.net/carolzhang8406/article/details/49761927