Git 就像个时光机器,能让我们还原到任何提交。

还原未提交的更改

假如我们在查看一个干净的代码仓库,干净意味着工作区中的文件保持着最后一次提交的状态,没有修改。在查看的过程中,我们有意或无意的修改了工作区中的文件,之后我们想把这些文件恢复成查看前的样子。像这样 要还原自上次提交以来在工作区所做的所有更改 ,方法为:选中所有更改文件的父目录,鼠标右键单击,在弹出的上下文菜单中,选择 TortoiseGit - Revert

在这里插入图片描述
弹出还原对话框,在该对话框中,选择全部,单击 “OK” 键,自上次提交以来的所有修改会全部还原。这意味着工作区中的内容重新变得和最后一次提交时的内容一致。

  1. 如果只是还原一个文件,可以选中该文件,鼠标右击 - TortoiseGit - Revert
  2. 如果要还原 已删除 重命名 文件, 必须要选中父目录 ,鼠标右击 - TortoiseGit - Revert ,这是因为工作区中已经找不到该文件了。
  3. 如果还原 已删除 重命名 新添加 文件,也可以在提交(commit)时、查看仓库状态(status)时选择相应文件,使用右键菜单 - Revert... 。比如在提交对话框中,如果你发现 README.md 文件是意外修改的,你不想提交它,而是要把它恢复,这时只需要选中 README.md 文件,鼠标右击 - Revert...

还原已提交的更改

上面的 Revert 操作只能还原本地工作区中的更改,如果要还原已经提交的更改,则需要在 日志对话框 中操作:

  1. 选中仓库,鼠标右击 - Git Show log ,打开日志对话框;
  2. 选择要还原的提交,鼠标右击 - Revert change by this commit ,即可完成还原。如果你还原了最后一个提交,最后一个提交的信息仍然保留着,但工作区中最后一次提交修改的内容已经被还原;
  3. 马上进行一次提交,或者修改工作区的内容后再提交。

在这里插入图片描述
注:虽然你还原了最后一次提交的修改,但是最后一次提交仍然会存在你的仓库中,并且可以在日志对话框中看到。

如果你提交了几次后,出于某种原因,最近的几次提交不想要了,你想回到某个提交,就像最近的几次提交不存在一样。实现这种情景的是 重置 (reset)。

重置仍然在日志对话框中操作。如下图所示,我想将某个仓库重置到“feat: 增加颜色区分AQI等级”提交:选中该提交,鼠标右击 - Reset "master" to this...

在这里插入图片描述
这将打开重置对话框,如下图所示:

在这里插入图片描述
这里有三种 重置类型 (Reset Type):

  1. Soft:软重置。之前的提交内容不删除,全部还原到工作区,这些文件处于 已暂存 状态,通过 Git 命令可以看出:

在这里插入图片描述
3. Mixed:混合重置。这是默认设置。之前的提交内容不删除,全部还原到工作区,这些文件处于 已修改 状态,通过 Git 命令可以看出:
在这里插入图片描述
注:这里用到 Git 命令只是为了说明 Soft 模式 和 Mixed 模式的细微差别,之所以用 Git 命令,是因为除了叠加的图标, TortoiseGit 看不出来这两种模式的区别。换句话说,如果你使用 TortoiseGit ,你可以无视 Soft 模式 和 Mixed 模式的区别,使用任何一个都可以。
5. Hard:硬重置。之前的提交内容全部删除,并不会还原到工作区。工作区只保留这次提交的内容,即“feat: 增加颜色区分AQI等级”提交的内容。

所以如果你确定不要某些提交,选择 硬重置 即可。

读后有收获,资助博主养娃 - 千金难买知识,但可以买好多奶粉 (〃‘▽’〃)
千金难买知识,但可以买好多奶粉

今天推送文件时一不小心Fetch了,删除文件后不知道怎么恢复原来版本,上网查了下才发现 git 原来这么强大,在此记录下方法,以后再研究 git : 这次失误告诉我,代码乱了不要紧千万不要delete整个文件夹,否则log都查不到。 TortoiseGit 有两种回滚代码方式, 一种是导出指定版本代码为zip格式,不影响源代码;另一种是直接在源代码上回滚, 指定版本之后写的代码都会被删除。下面分别介绍这两种...
1. git 利用 TortoiseGit 小乌龟回滚代码 (在 git 操作中已经说明了用 git 命令回滚代码https://blog.csdn.net/qq_39291929/article/details/84105251) 代码如下: System.out.println("测试回滚1"); System.out.println("测试回滚2"); System.out.println("测试回滚...
TortoiseGit 安装与配置 eclipse maven install 没反应和跳过单元测试 在使用mvn package进行编译、打包时,Maven会执行src/test/java中的JUnit测试用例, 有时为了跳过测试,会使用参数-DskipTests和-Dmaven.test.skip=true, 这两个参数的主要区别是: -DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。 -Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。
CSS,可以帮助把网页外观做得更加美观; JavaScript,是一种轻量级的解释型编程语言; jQuery,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互; Bootstrap 是快速开发 Web 应用程序的前端工具包。它是一个 CSS,HTML 和 JS 的集合,它使用了最新的浏览器技术,给你的 Web 开发提供了时尚的版式; AJAX,创建交互式网页应用的网页开发技术。 前端游戏设计是游戏开发中至关重要的一部分,它涉及到游戏的外观、交互和用户体验等方面。以下是一些前端游戏设计的思路和关键点: 用户体验:确保游戏界面简洁直观,易于操作。考虑用户的需求和习惯,设计友好的用户界面,包括按钮、菜单、指引等,以提升用户体验。 视觉设计:选择合适的配色方案、图标和界面元素,保持视觉风格一致性。优秀的视觉设计可以提升游戏的吸引力和品质感。 动画效果:运用动画效果增强游戏的交互性和趣味性。动画可以使游戏更生动,提升用户参与感。 响应式设计:确保游戏在不同设备上都能正常展示和运行,包括PC、平板和手机等。响应式设计可以提高游戏的可访问性和用户覆盖范围。
Bazel 是一个多语言、开源的构建工具,旨在支持大型软件项目的自动化构建和测试。Bazel 的设计理念着重于提高构建的速度和可靠性,同时支持多平台构建。它支持多种编程语言,包括但不限于 Java、C++、Python 和 Go。Bazel 使用一种名为 BUILD 的高级构建语言来描述项目的构建过程,使得构建配置既灵活又易于理解。 Bazel 的核心特性之一是其强大的依赖分析和管理能力。通过精确地跟踪项目中每个组件的依赖关系,Bazel 能够确保构建的增量性和确定性。这意味着当源代码发生变化时,Bazel 只会重新构建受到影响的部分,从而显著提高构建效率。此外,Bazel 支持远程缓存,允许跨多个构建共享部分构建结果,进一步加速构建过程。 Bazel 还特别注重于构建的可重复性。通过将构建环境封装化,Bazel 确保了构建过程不会受到外部环境的影响,从而使得构建结果在不同环境中是一致的。这一点对于确保软件质量和便于问题追踪尤为重要。
tortoisegit 是一个开源的 git 客户端工具,可以帮助用户更方便地使用 git 进行版本控制。要使用 tortoisegit ,首先需要安装 git 客户端,然后再安装 tortoisegit 工具。安装完成后,可以在文件资源管理器中右键单击文件夹或文件,选择相应的 git 操作,比如提交、拉取、推送等。另外,还可以在桌面上创建快捷方式,方便快速访问仓库。 在使用 tortoisegit 时,需要了解一些 git 的基本概念,比如仓库、分支、提交、拉取、推送等。可以通过观看相关的教程视频或者阅读 git 的官方文档来学习这些知识。另外, tortoisegit 的官方网站也提供了详细的使用手册和常见问题解答,可以帮助用户更快地上手。 除了基本的 git 操作外, tortoisegit 还提供了一些高级的功能,比如 git flow工作流、rebase操作、stash功能等。这些功能可以帮助用户更高效地进行团队协作,提高工作效率。 总的来说, tortoisegit 是一个强大且简单易用的 git 客户端工具,适合 git 初学者和有一定经验的开发人员使用。通过学习相关的教程和文档,相信大家都能够轻松上手并使用 tortoisegit 来管理自己的代码版本。