使用Git进行版本控制

Posted 白龙码~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Git进行版本控制相关的知识,希望对你有一定的参考价值。

文章目录

Git版本控制

一、版本查看

git log

查询历史提交版本,默认显示对应版本的:

  • 提交哈希值
  • 提交者
  • 提交日期
  • 提交的捎带信息

当内容较多时,可以使用空格进行翻页b向上翻页q退出

git log --pretty=oneline

简化输出仅显示当前和之前的版本,以及提交的哈希值和提交的捎带信息。

git log --oneline

简化输出仅显示当前和之前的版本,以及提交哈希值的前7个字符和提交的捎带信息。

git reflog

简化输出显示所有的版本,其中HEAD@step表示从当前版本移动至对应版本需要的步数

注:HEAD是git用来控制版本的指针。

二、版本回退

git reset --hard <索引值>

回退至指定索引对应的版本。

  • 索引指的是Git为每一个历史版本生成的哈希值,使用简化后的前7个字符亦可。
  • HEAD->所在行表示HEAD指针指向的版本,即当前版本。

git reset --hard HEAD^

一个^表示从当前版本开始回退一个版本,n个^表示从当前版本开始回退n个版本。


git reset --hard HEAD~n

~n表示从当前版本开始回退n个版本。


git reset选项解读

git reset命令除了--hard选项,还有--soft--mixed选项。

  • --soft :仅仅更新本地仓库,将HEAD指针移动至对应版本。工作区和暂存区的内容没有回退,其中相对于回退版本新增的文件和修改的内容,全部变成未commit的状态,存放在暂存区

    简单来说,就是重置git commit

  • --mixed(默认参数):工作区内容不变,将本地仓库和暂存区的内容更新至指定版本。

    简单来说,就是重置git add + git commit

  • --hard:首先将当前版本下没有提交的新增文件和修改内容全部清空,然后将工作区的内容恢复至本地库的对应版本

    简单来说,就是重置工作区 + git add + git commit

三、版本比较

git diff [文件名]

比较工作区与暂存区中文件的差异。

如果指定文件名,则仅比较指定文件的差异,否则比较当前工作区中的所有文件。

git diff <索引>/HEAD

比较当前工作区和指定版本的文件差异,索引即版本哈希值,若使用HEAD则表示与当前最新的版本之间的差异。

git diff <索引1> <索引2>

比较指定两个版本的文件差异。

四、撤销修改

文件的删除在Git中也是一种修改操作!

  • 当文件已修改,但是还没有添加至暂存区
git checkout -- <文件名>

注:git checkout优先利用暂存区中的文件进行恢复,达到撤销修改的目的。如果暂存区为空,则利用本地库进行恢复


  • 当文件已修改,且已经添加至暂存区
# 先将暂存区的内容恢复成最近一个版本的状态
git reset [--mixed] HEAD <文件名> 
# 再利用checkout进行恢复
git checkout -- <文件名>
  • 当文件已修改,且已经提交至本地库
# 直接利用版本回退进行撤销
git reset --hard HEAD^

以上是关于使用Git进行版本控制的主要内容,如果未能解决你的问题,请参考以下文章

使用Git进行版本控制

使用Git进行版本控制

在Xcode中使用Git进行源码版本控制

在Xcode中使用Git进行源码版本控制

Visual Studio Code 使用Git进行版本控制

Visual Studio Code 使用Git进行版本控制