背景
写在前面
在项目开发的过程中,有时候提交了不应该提交的内容或提交错分支了,需要撤回对应的提交内容。也就是需要进行版本回退操作
那具体怎么操作呢?
再说具体怎么操作之前,我们需要明白回退有几种情况。
第一种情况:已经commit,但未push到远程仓库。1️⃣
第二种情况:已经commit,并且ush到远程仓库。2️⃣
📍 针对以上两种情况如何回退 ❓
已经commit,但未push到远程仓库,怎么回退 ⚡️
🅰️ 方法1:git reset --soft
在README.md文件中模拟我们编写的代码内容,执行提交命令并提交到了本地仓库。
此时回滚到上一个版本,可以通过执行以下命令可以回退到上一个commit
git reset --soft HEAD^
执行完这个命令之后,再查看是否回退到了上一个commit
PS D:\giteeSource\tuku> git reset --soft HEAD^
PS D:\giteeSource\tuku>
Tips: HEAD^的意思是上一个版本,也可以写成HEAD~1 ,如果你进行了2次commit,想都撤回,可以使用HEAD~2,这个命令仅仅是撤回commit操作,写的代码仍然保留。
🅱️ 方法2:git reset --mixed
继续在README.md文件中填写一些内容模拟编写的代码,并且提交到本地仓库。
执行以下命令进行版本回退
PS D:\giteeSource\tuku> git reset --mixed HEAD^
Unstaged changes after reset:
M README.md
M pom.xml
PS D:\giteeSource\tuku>
经过查看确实回退到了上一个提交的commit。
㊙️ 小小的总结
以上的2个方法都可以回退到上一个版本,但是需要注意的是,仅仅是回退了上一个版本,你提交的内容仍存在的。
已经commit,并且push到远程仓库,怎么回退 ⚡️
老样子在README.md文件中填写一些内容模拟编写的代码,并且提交到本地仓库。
🚹 方法1:git reset --hard 版本号
版本号可以通过 git log 查找
PS D:\giteeSource\tuku> git reset --hard f620f481a3ffc32d3d7587406eacb538dd2b5455
HEAD is now at f620f48 up
PS D:\giteeSource\tuku>
通过以上命令,确实看到版本回退到指定的版本上了。
🚻 方法2:git revert 版本号
事先这里已经模拟好了3次提交到远程仓库的操作了,假如现在是提交错了,需要回退到 上一个版本号,
对应的版本号 还是可以通过 git log 查找。
然后执行以下命令回退到上一个版本
PS D:\giteeSource\tuku> git revert 767ecc1766dddab59504a1bb203d7ce003fff7e4
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
error: could not revert 767ecc1... 模拟提交 2
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
PS D:\giteeSource\tuku>
🉐 Tips: 这种方式不会把版本往前回退,而是生成一个新的版本。
The end.