Git基础操作

Git基础操作

一. Git仓库的三大区域

本节课程我们将完成一次从本地仓库修改代码、提交并推送到远程仓库的操作。

Git 本地仓库有三大区域:工作区暂存区版本区 。这是一个概念,有这个了解即可,随着使用 Git 的时间增多,慢慢就会理解这三个区域的作用以及为何要这么设计,学习阶段只需按照文档逐步操作即可。接下来我们以命令为主线介绍 Git 的操作。

在这里插入图片描述

注意,所有 Git 命令都以 ** git ** 开头。

二. 一次完整的修改、提交、推送操作

首先,进入仓库主目录,执行 git status 查看整个仓库的状态:

在这里插入图片描述

在这里插入图片描述

2.1 对工作区进行修改

创建一个文件并再次查看仓库状态,这步操作是在工作区中:

在这里插入图片描述

我操作的截图:

在这里插入图片描述

如上图所示,新建文件后,命令行前缀又发生了一些微小的变化,红色 master 后面出现了 * 星号,这表示工作区或暂存区有变化,对文件进行增删改操作都会出现这个星号,另外使用 git status 命令亦可查看详情。

2.2 添加修改到暂存区以及撤销修改

按照上图的提示,使用 git add [文件名] 命令跟踪此新建文件,即把新增文件添加到暂存区,以备提交:

在这里插入图片描述

我操作的截图:

在这里插入图片描述

如果对多个文件或目录进行了增删改,可以使用 git add . 命令全部添加到暂存区。
注意这里有个概念,当我们修改了工作区,git add 命令是将这些修改添加到暂存区,暂存区记录的只是修改。如果要撤销暂存区的修改怎么办?根据上图的提示,执行 git reset -- [文件名] 或者 git rm --cached [文件名] 命令即可:

在这里插入图片描述

我操作的截图:

在这里插入图片描述

上图的命令,👉如果省略最后的文件名,把命令写成 即可把暂存区的全部修改撤销。✨ 好,现在暂存区的修改被撤销,又回到了工作区。

现在介绍另一个命令 ,它可以用来查看工作区被跟踪的文件的修改详情,此时新建文件 one.txt 并未被跟踪,而已被跟踪的文件 README.md 无修改,所以看不到。 注意,只有在版本区中存在的文件才是被跟踪文件。git diff

我们先修改 README.md 文件,然后执行此命令:

git diff

在这里插入图片描述

我的操作截图:

在这里插入图片描述

使用 git diff 命令会将工作区修改的详细情况显示出来。

现在,将工作区的两处修改(新增文件 one.txt,修改文件 README.md)全部添加到暂存区,并使用 查看暂存区的全部修改:git diff --cached

在这里插入图片描述

同样,此命令也会显示工作区的修改情况详细内容,即暂存区修改详情情况:

在这里插入图片描述

**特别注意: ** 上面跳转才显示修改详情的截图是很早版本的git,现在的版本是不会跳转到详情页,而是直接将详情页面显示出来,看我的操作截图:

在这里插入图片描述

2.3 查看提交历史

接下来,将执行 命令把暂存区的修改提交到版本区,生成一个新的版本。git commit

在此之前,先介绍另一个命令 ,它用来查看版本区的提交历史记录,当前只有一个提交,就是在 GitHub 上创建新仓库时的初始化提交。 同样此命令也会跳到新页面** 新版本的git不会跳转页面,而是直接显示出来** ,如下图所示:git log

在这里插入图片描述

新版本下我的操作截图:

在这里插入图片描述

关于查看提交历史记录的命令,有些常用的选项介绍一下:

  • git log [分支名] 查看某分支的提交历史,不写分支名查看当前所在分支
  • git log --oneline 一行显示提交历史
  • git log -n 其中 n 是数字,查看最近 n 个提交
  • git log --author [贡献者名字] 查看指定贡献者的提交记录
  • git log --graph 图示法显示提交历史

常用选项操作截图:

在这里插入图片描述

在这里插入图片描述

提示: 如果忘记命令,可以使用git log - -help,会弹出英文的帮助文档。

2.4 配置个人信息

接下来需要对 Git 进行一些本地配置:

  • user.email:写入你自己注册 GitHub 账号的邮箱
  • user.name:你自己的 GitHub 账号名字
    这两个命令设置你的身份信息如下图。 可以查看配置信息(就不展示截图了):git config -l

在这里插入图片描述

完成后,系统自动生成 Git 的配置文件,就是主目录中的隐藏文件 :.gitconfig

在这里插入图片描述

上图所示的配置文件也是可以直接手动修改。我的操作截图:

在这里插入图片描述

2.5 提交暂存区的修改

现在执行 命令生成一个新的提交,一个必须的选项 用来提供该提交的备注:git commit -m "备注内容"

在这里插入图片描述

提交后,暂存区的修改被清空,执行 git log查看提交记录,紫色框中的十六进制序列号就是提交版本号,这是很重要的信息,每个提交都有自己单独的版本号,就像公民身份证号一样:

在这里插入图片描述

我的操作的截图:

在这里插入图片描述

观察上图的提交信息,提交版本是按时间倒序排列的,也就是最近的提交排在最上面,你可能需要查看时间正序排列的信息,那么可以使用 命令。git log --reverse

现在介绍一个超级实用、使用频率极高但几乎所有 Git 教程都不重视的命令 ,它用来查看全部分支信息:git branch -avv

在这里插入图片描述

上图有三行信息,依次说明:

第一行,开头的星号表示当前所在分支,绿色的 master 是分支名,之所以是绿色,也是因为它是当前所在分支。 后面第二项是版本号,第三项中括号里面蓝色的字,表示此分支跟踪的远程分支的名字,当然啦,这也是克隆远程仓库到本地时的默认设置 – 创建 master 分支并自动跟踪远程同名分支;冒号后面黑色文字表示本地分支领先其跟踪的远程分支一个提交。 最后一项是提交时填写的备注信息。

第二行,是 Git 指针信息,它指向远程仓库的 master 分支,这行信息暂不重要。

第三行,远程分支信息,详见第一行的解释。

我的操作截图:

在这里插入图片描述

在执行 命令时,再介绍一个我并不推荐的选项 ,它的作用是将未添加到暂存区的修改,也就是工作区的修改也一并提交,但会略过未被跟踪的文件,比如新建文件 one.txt,此命令的完整格式:git commit -am 'xxxx' 。 谨慎的做法是按照前文的顺序,修改工作区 - 提交到暂存区 - 随时使用 git status查看仓库状态 - 将暂存区的修改提交到版本区生成一次新的提交。<br />最后一个环节,将本地新增的提交推送到 GitHub 远程仓库中,命令是 ,后面不需要任何选项和参数,此命令会把本地仓库 master 分支上的新增提交推送到远程仓库的同名分支上,因为当前所在的分支就是 master,而且上文提到,它已经跟踪了远程仓库的同名分支:git push

在这里插入图片描述

我的操作截图:并不需要输入密码

在这里插入图片描述

此命令需要再次输入你的 Github 用户名和密码,密码为隐藏数据,输入时看不到。 推送成功后执行 查看分支情况:git branch -avv

在这里插入图片描述

我的操作截图:

在这里插入图片描述

如上图所示,本地分支 master 与远程分支 origin/master 的版本号一致,通常看两个版本号是否一致,只需比对前四位。 看一下网页上的情况:

在这里插入图片描述
在这里插入图片描述

完全符合预期。
一个小细节,在上图右侧有 “14 hours ago” 字样,因为这次提交操作是 14 小时前完成的,提交后我睡了一觉,与推送操作的时间无关。
以上就是一次完整的修改 - 提交 - 推送操作。 一次推送中可以包含多个 操作,也就是多个提交可以一起推送。git commit

三. 版本回退

如果发现 one.txt 文件内容有误,怎么做? 可以修改此文件然后再次添加到暂存区、提交、推送,也可以撤销最近一次提交,修改文件后重新提交推送。 现在使用后一种方法来演示撤销提交的操作流程。

首先执行git reset --soft HEAD^ 撤销最近的一次提交,将修改还原到暂存区。 表示软退回,对应的还有--hard 硬退回,后面会讲到, HEAD^表示撤销一次提交,HEAD~2表示撤销两次提交,撤销 n 次可以简写为HEAD~n 。 软退回一个提交后执行 命令查看分支信息:git branch -avv

在这里插入图片描述

我的操作截图:

在这里插入图片描述

可以看到本地仓库的 master 分支的版本号已经发生了变化,变成了前一次提交的版本号,中括号里也有提示信息,本地分支 master 落后其跟踪的远程分支 origin/master 一个提交。
执行git status 查看仓库状态,果然上一个提交中的修改全部扔回了暂存区:

在这里插入图片描述

我的操作截图:

在这里插入图片描述

再次修改 one.txt 文件,执行git add . 命令将新的修改添加到暂存区,然后执行 git commit -m "xxx"命令生成新的提交:

在这里插入图片描述

我的操作截图:

在这里插入图片描述

四. 处理commit 时间线分叉

执行 git statu查看仓库状态和git branch -avv 查看分支状态:

在这里插入图片描述
在这里插入图片描述

我的操作截图:

在这里插入图片描述

可以看到本地仓库的 master 分支与远程仓库的 origin/master 分支在提交版本上有了冲突,又叫做提交时间线分叉。 因为刚才的提交操作不是基于远程仓库 origin/master 分支的最新提交版本,而是撤回了一个版本。 这种情况下也是可以将本地 master 分支推送到远程仓库的,需要加一个选项-f ,它是--force 的简写,这就是强制推送:

在这里插入图片描述

我的操作截图:

在这里插入图片描述

执行git branch -avv 看一下分支信息,本地 master 与远程 master 的版本号一致,前四位都是 e290,在浏览器上刷新 GitHub 页面,结果如预期:

在这里插入图片描述

我的操作截图:我的本地main主支与远程的版本号一致,都是34a65e6

在这里插入图片描述

五. 本地仓库commit 变化记录

假设此时发现情况不对,之前的那次版本号为 5c04 的提交是正确的,刚才的版本回退操作全都是误操作,怎么办? 再次执行一次版本回退吗? 当然不需要啦,我们有git reflog 命令,它会记录本地仓库所有分支的每一次版本变化。 实际上只要本地仓库不被删除,随你怎么折腾,都能回退到任何地方。 记录只存在于本地仓库中,本地仓库删除后,记录消失。 执行此命令如下图所示:

在这里插入图片描述

我的操作截图:

在这里插入图片描述

怎么回退到 5c04 那个版本呢? 可以直接执行命令git reset --hard [版本号] ,如果记不清版本号,也可以根据上图第 3 行的信息,执行 git reset --hard HEAD@{2}命令,其中HEAD@{2} 就是上图第 3 行第 2 列所示,这个命令的意思是回到当前分支最近两次提交版本变化前:

在这里插入图片描述

我的操作截图:

在这里插入图片描述

还想反悔,刚才还是改错了,怎么办? 再执行一次即可,这次大括号里就是 1 了:

在这里插入图片描述
我的操作截图:

在这里插入图片描述

注意: 每一次回溯版本,版本序列都会发生改变,所以每一次回溯版本前,记得一定先查看对应的版本序列,根据最新的版本序列来回溯想要的版本。

我的回溯版本号,查看分支信息,查看状态信息,然后推送到远程分支中:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

重要的一点,本节全部命令中,只有push是需要联网执行的,它对远程仓库进行了修改。

六. 总结

本节实验包括以下内容的讲解:

  • Git 仓库的三大区域

  • 修改工作区

  • 将工作区的修改添加到暂存区

  • 从暂存区撤销修改到工作区

  • 查看提交历史

  • 配置个人信息

  • 完成一次提交

  • 版本回退

  • 处理提交时间线分叉问题

  • 使用 git reflog 命令查看本地仓库版本变化

这些内容在实际操作中十分常见,希望大家多多练习,熟练掌握。 下节课程,我们将学习设置命令别名、SSH 关联和分支管理的操作。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值