git各阶段版本回退命令

简介: git各阶段版本回退命令

1、git各阶段版本回退命令

123这3个阶段如何进行回退?

workspace:工作区

index:暂存区

Repository:本地仓库

Remote:远程仓库


1.1、工作区的代码改动不想要了(git add之前)

1.2、git add以后放入暂存区的代码修改不想要了

1.3、git commit提交到本地仓库的代码不想要了

看上面的git log,每一次commit提交日志都生成一个commit id,如果修改刚提交的修改想回退,那么通过上面的commit id就可以(commit id不需要写全,前几位能区分不同的commit id就可以),命令如下:

实际上,上面的git reset --hard commit_id是把本地仓库分支版本上的HEAD指针进行了移动,实际上没有删除任何内容;

如果上面的代码回退你后悔了,可以用git reset --hard继续返回到之前的版本上,

但是之前版本的commit id在哪里看呢?可以用git reflog命令,如下:

看到了吧,我又回来啦!

1.4、远程仓库的代码修改不想要了

有两种方法:

  • a、git pull,在本地分支最新的代码版本上删除之前修改的,然后重新push到远程代码仓库上
  • b、在本地分支上通过git reset --hard xxx回退到之前的版本,然后通过git push -f推送覆盖远程代码仓库

git checkout – 在git add之前,把工作区的代码用版本库中的代码覆盖掉,注意命令中的–不能

去掉,否则成切换分支的命令了

git reset HEAD 把git add之后,暂存区的内容全部撤销

git reset --hard commitid 把提交到本地仓库中的代码改动进行回退

git reflog 查看HEAD指针的改动日志

git push -f 强制推送本地仓库代码到远程仓库

git diff HEAD – 查看工作区file文件和仓库中该文件最新版本的代码有什么区别


2、测试

情况1:工作区修改的代码不要了

修改代码:

实际上这里 <= 是错的!

此时如果不想这样写,怎么退回?

git checkout -- main.cpp
1

已经退回了!


情况2:将工作区修改的代码添加到暂存区,发现有错,退回!

再在代码中随便加入一行代码!

将工作区修改的代码添加到暂存区:

将暂存区的内容全部舍弃:

git就退回为工作区的改动:

后面的操作就和 情况1相同了!


情况3:将错误代码添加到本地仓库了,还未提交到远程仓库!

可以看到本地仓库有1个新的提交:

可以看到远程仓库和本地仓库已经不在一个点上了,也可以看到本地仓库最新修改没有提交到远程仓库中!

每一次修改都会对应一个commit ID。

此时要要进行回退,回退到哪个版本,就用哪个版本的commit的ID号!

git reset --hard 56f46397d5f26607288b39aa03f2c167817790f4
1

打开源文件,可以看到已经回退了!

当然,我们操作的记录都会记下来的!

我们再根据commit ID回到未回退之前:

可以看到我们又回来了!


情况4: 将错误代码直接提交到远程了!

怎么回退?

方法1: 重新修改代码,再提交到远程仓库!

方法2:

提示本地分支落后于远程分支:

直接推送是不可以的(只有本地仓库比远程仓库新,才可以直接推送;否则不可以)

因为如果成功了,你可能将别人的代码弄掉!

但是这里,你知道只有你一个人操作了,因此可以强制操作!

这样就可以了,已经回退了!

相关文章
|
14天前
|
缓存 Java Shell
[Git]入门及其常用命令
本文介绍了 Git 的基本概念和常用命令,包括配置、分支管理、日志查看、版本回退等。特别讲解了如何部分拉取代码、暂存代码、删除日志等特殊需求的操作。通过实例和图解,帮助读者更好地理解和使用 Git。文章强调了 Git 的细节和注意事项,适合初学者和有一定基础的开发者参考。
36 1
[Git]入门及其常用命令
|
1月前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
110 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
18天前
|
开发工具 git 开发者
|
18天前
|
开发工具 git 开发者
提升Git效率:掌握这5个高级命令
【10月更文挑战第17天】
39 0
|
2月前
|
存储 Linux 开发工具
掌握 Git 命令:每个开发者的必备技能
无论团队项目还是个人开发,掌握 Git 命令都是必备技能。本文介绍 Git 的基本概念与命令,如初始化仓库 (`git init`)、添加文件 (`git add`)、提交更改 (`git commit`)、检出分支 (`git checkout`)、合并分支 (`git merge`) 等,还分享了高级技巧如查看差异 (`git diff`)、撤销提交 (`git revert`)、修复合并冲突 (`git mergetool`) 和使用别名简化命令 (`git config --global alias.ci commit`)。
|
2月前
|
存储 Linux 开发工具
Git基础命令,分支,标签的使用【快速入门Git】
本文详细介绍了Git版本控制系统的基础概念和常用命令,包括工作区、暂存区和版本库的区别,文件状态的变化,以及如何进行文件的添加、提交、查看状态、重命名、删除、查看提交历史、远程仓库操作和分支管理,还涉及了Git标签的创建和删除,旨在帮助读者快速入门Git。
Git基础命令,分支,标签的使用【快速入门Git】
|
2月前
|
开发工具 git
深入理解Git中的git pull和git fetch命令
深入理解Git中的git pull和git fetch命令
100 0
|
6月前
|
Linux 开发工具 数据安全/隐私保护
分布式版本控制git
分布式版本控制git
|
3月前
|
敏捷开发 存储 开发工具
版本控制系统的选择:Git与SVN的比较
【8月更文挑战第14天】Git和SVN都是优秀的版本控制系统,它们各自具有独特的优势和适用场景。在选择版本控制系统时,需要根据具体的项目需求、团队特点和开发模式来综合考量。对于需要分布式团队协作、高效处理大型项目或采用敏捷开发模式的团队来说,Git是一个更好的选择。而对于传统团队、集中式开发或简单项目来说,SVN可能更加合适。无论选择哪种版本控制系统,都应该充分利用其提供的工具和功能来提高代码质量和开发效率。
|
2月前
|
存储 Linux 开发工具
掌握版本控制的艺术:Git 技巧深度解析
在软件开发中,版本控制对于代码管理和团队协作至关重要。Git 作为最流行的分布式版本控制系统,凭借其强大的功能和灵活性成为开发者必备工具。本文深入探讨 Git 的高级技巧和最佳实践,包括交互式暂存、撤销提交、合并冲突处理等,帮助你更高效地使用 Git。通过遵循清晰的提交信息、保持提交原子性、利用分支开发等最佳实践,开发者可以更好地管理代码库,提升协作效率。