【Git学习笔记二】时光穿梭机

版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址:https://blog.csdn.net/sun8112133/article/details/103888442








一、日志查询

1、版本日志查询

如果我们提交了很多个版本,想要查看所有版本,可以使用 版本日志查询 命令:git log ,该命令会显示从最近到最远的提交日志。如,我这里一共提交了三次:

日志查询

commit 5875ce... :表示版本号,版本号是通过一系列算法计算出来的,每个人提交的版本号都是唯一的;

(HEAD -> master) :表示目前所在的主分支版本;

Author :表示提交的作者;

Date :表示提交时的时间;

最后一行表示提交的注释。

如果日志过多,看的会不太清晰,我们还可以加上 --pretty=oneline 参数,将日志信息简洁显示。

2日志查询简洁显示


2、命令日志查询

Git 提供了一个 命令日志查询 的命令,用来记录你的每一次命令,版本切换时可能会用到:git reflog

命令日志查询



二、版本切换

如果想要进行版本的切换,就必须知道要切换的那个版本的版本号。在 Git 中,用 HEAD 表示当前版本(也就是 5875ce...,注意这是我的版本号哦~),用 HEAD~1 表示上一个版本(2a933c...),上上个版本就是 HEAD~2,依次类推。使用命令进行切换:git reset --hard HEAD~ngit reset --hard 版本号(注意这里的版本号只需要简单写前几位即可,不需要写那一大串)。

比如我要切换到 add info.txt & modified readme.txt 这个版本,可以使用 HEAD~1 ,也可以直接写它的 版本号

1、通过 HEAD 方式切换

版本回退


2、通过版本号切换

你会发现当前版本已经是 2a933c... 了。我们也可以直接写它的版本号进行切换:

版本回退用版本号

大家会发现,当我们版本回退后,查看版本日志时之前最新的版本已经不存在,如果我们想回到未来的版本该如何操作呢?我们可以用上一小节提到的 命令日志查询 的命令:git reflog。从中找到最新的那个版本号,再用版本号进行版本切换。

版本切换到未来版本

Git 的版本切换速度是非常快的,是因为在 Git 的内部有个指向当前版本的 HEAD 指针,当你切换版本的时候,Git 仅仅是把 HEAD 指向另一个版本。

指针



三、工作区与暂存区

Git 与其他版本控制系统的一个不同之处就是有 暂存区 这个东西。

1、工作区

就是你电脑中能看到的目录,比如我之前创建好的 MyGit 这个目录,它就是一个 工作区

工作区


2、版本库中的暂存区

我的 工作区 中有一个隐藏目录 .git,这个目录就不能算工作区了,而是 Git版本库

Git版本库 里存了很多东西,其中最重要的就是暂存区(stage 或叫 index),Git 还会为我们自动创建的第一个分支 master,以及指向 master 的一个指针 HEAD

版本库

上一篇博客我们说过把文件往 Git版本库 里放的时候,有两步:
 1.先用 git add 命令将文件添加进去,实际上就是将文件添加到了 暂存区
 2.再用 git commit 命令提交,实际上就是将 暂存区 的所有内容提交到了当前分支。
 
图中的 git commit 命令就是往 master 分支(主分支)上提交。

你可以简单理解为,需要提交的文件修改先放到 暂存区,然后,一次性提交 暂存区 的所有修改。

添加到暂存区

提交到分支



四、撤销修改

撤销修改有两种情况:
 1.一个文件修改后,还没有添加到 暂存区,如果撤销修改,这个文件会放弃工作区中的修改,回到版本库里的状态;
 2.一个文件修改后,已经添加到 暂存区,如果撤销修改,这个文件会被移出 暂存区,回到第一种情况。

1、还没有添加到暂存区

使用命令: git restore 文件名...,就可以将这个文件中的修改全部撤销还原。

撤销修改第一种情况


2、已添加到暂存区,还没有提交

使用命令: git restore --staged 文件名...,就可以将这个文件移出 暂存区,重新回到第一种情况。

撤销修改第二种情况



五、删除文件

如果 Git版本库 中有文件需要删除,有三种办法:

  1. 先在 工作区 将此文件删除,再将删除的文件添加到 暂存区,最后将 暂存区 中的删除内容提交到 Git版本库 中;
  2. 也可以先将 工作区 的这个文件删除,再使用 git rm 文件名 命令删除 Git版本库 中的文件,最后提交到 Git版本库
  3. 或者直接使用 git rm -f 文件名 命令强制删除此文件。

第 3 种办法太过暴力,不推荐使用,推荐大家使用第 2 种方法。

1、普通删除

删除文件


2、强制删除

强制删除文件



博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!



发布了166 篇原创文章 · 获赞 169 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/sun8112133/article/details/103888442