通俗易懂地学习 git 中最常用的命令

一、概述

在上节,带大家一起简单了解了 git ,并使用 git 成功将代码托管到 github。在本节,我们进一步学习 git ,我们根据实际开发中的需求,来逐个认识 git 中最常见与最基本的指令。

本系列大概会有 3 篇文章,这是第 2 篇,如果你还没看上一篇,推荐先看上一篇:
记录 git 几条命令,将自己的代码托管到 Github 上

实际上 git 的每个指令都有很多功能,这系列的文章我会介绍最常用的 git 指令,如果你想深入了解某个指令,git 的官方能提供很多帮助,如下指令可以查看官方的文档帮助

# 查看git的所有指令
git --help
# 查看 add 指令的详细帮助,此方法可以查看其他指令的详情
git add --help

本节关键词:本地仓库、远端仓库(或者叫远程仓库、服务器仓库)、工作区、缓存区、本地仓库(或者叫 本地版本库)

二、本地仓库的初始化

有两种初始化 git 项目仓库的方法。第一种是从一个 git 服务器克隆一个现有的 git 仓库。第二种是在现有项目 或 空项目目录下初始化 git 仓库,并绑定上远端仓库。

1. 创建远端仓库

初始化本地仓库前,我们先创建远端仓库。远端仓库我们可以使用 github,这是最知名的基于 git 的代码免费托管服务,缺点是国内访问可能比较慢。也可以用 gitee,这是国内的基于 git 的代码免费托管服务,特点是访问速度快、中文界面。我们以 gitee为例,gitee 的网址是 https://gitee.com,先创建个人账号,登录之后点击网址右上角的 “创建仓库”,即进入创建仓库界面,如下图

在这里插入图片描述

注意:

  • 仓库名可以用中文,但是仓库路径必须要用英文标识
  • 如果希望自己的仓库可以被别人访问,则选择 “开源”

其他选项默认即可,点击“创建”按钮即可完成 远端仓库的创建。

2. 从远端克隆仓库

我们在 gitee 上有一个现有的仓库 https://gitee.com/kotlindev/test1.git

将远程 test1 仓库克隆到本地,克隆完成后本地将自动创建出 test1 目录,同时远端的文件同步到本地。

# 将远端 test1 仓库克隆到本地
git clone https://gitee.com/kotlindev/test1.git

克隆的同时可以也重命名,如下命令

# 将远端 test1 仓库克隆到本地,同时命名为 demo
git clone https://gitee.com/kotlindev/test1.git demo1

3. 在本地初始化 git 仓库

如果我们不克隆远端的仓库到本地,下面还有两种方法可以将本地的仓库绑定到远端的仓库。

方法一:将本地代码目录初始化为 git 项目,后绑定远端仓库

# 创建项目目录
mkdir test1
# 进入项目目录
cd test1
# 初始化git仓库
git init
# 绑定绑定远端仓库
git remote add origin https://gitee.com/kotlindev/test1.git

方法二:将远端仓库的.git目录拷贝(或移动)到本地项目目录

# 进入项目目录
cd test1
# 拉取远端仓库,并命名为 temp ,代表的是临时目录
git clone https://gitee.com/kotlindev/test1.git temp
# 将 temp 目录中的 .git 目录移动到当前项目目录
mv temp/.git ./
# 删除掉临时目录
rm -r temp

上面两种方法,都可以将本地项目目录与远端的 git 仓库进行绑定,绑定之后方可进行代码的同步、推送。

三、git 仓库的基本操作

1. 查看仓库的状态

git status

可以看到如下提示

在这里插入图片描述

上面的截图内容是:

  • 当前在 master 分支
  • 目前没有任何提交

2. 将工作区文件添加到 git 缓存区

我们先创建一个文件,如下命令

# 添加一个 c++ 源代码文件
touch main.cpp

现在文件在工作区,使用 git status 命令查看 git 状态,可以看到一个关键词 Untracked files,也就是没有被 git 监控的文件,这里所说的监控就是跟踪文件的变化,如下图

在这里插入图片描述

添加到 git 缓存区后,项目里的文件将会被 git 监控,使用以下命令将 main.cpp 文件添加到 git 缓存区

git add main.cpp

此时再使用 git status可以看到如下图
在这里插入图片描述

可以看到 Changes to be committed关键词,代表已经在 git 缓存区的文件。

在实际开发中,当我们每次编码完成后,工作区可能创建了很多文件,我们可以使用以下命令将所有文件添加到 git 缓存区。

# .代表当前目录,以下命令是将工作区的所有文件添加 git 缓存区
git add .

3. 将缓存区文件提交到 版本库

使用以下命令将缓存区的文件提交到版本库

# -m 参数后面代表的信息备注
git commit -m "first commit"

此时我们看到终端的一些提示信息,包含文件变动的一些基本信息,如下图
在这里插入图片描述

每次提交的变更内容,都会被 git 记录下来,我们可以使用以下命令查看 git 提交记录

git log

此时我们可以看到 git 如下图信息
在这里插入图片描述

第一行:本次提交的基本信息。第 2 列表示 git 提交的唯一标识(我们可以叫做提交 id 或者 commit id);第 3 列表示当前分支提交到远端 master 分支,表示本地当前分支(默认是 master) 提交到远端 master分支

我们现在还没提到分支概念,你只需要知道有这个名词就可以了,后面章节中将说明。任何时候,HEAD 所指向的分支就是当前分支。在无任何新建分支情况下,也就是只有 master 分支,HEAD 所指向的分支就是当前分支 – master。在新建分支并切换到新分支后,HEAD 所指向的分支就是新分支。

第二行:作者信息。第 2 列是我们设置的本地作者名称;第 3 列是我们设置的作者邮箱

第三行:git 提交的时间

剩余信息:作者提交时的备注信息

4. 查看文件差异

在 git 仓库中的文件,都会被 git 跟踪,如文件修改历史、是否是新文件、提交提交历史等等。

git diff 命令用于查看的文件的差异,我们可以通过该指令对比文件的各种差异,以下是一些常用指令

# 比较所有文件与缓存区文件差异
git diff
# 比较当前文件和缓存区文件差异
git diff <file>
# 比较两次提交之间的差异
git diff <id1> <id2>
# 在两个分支之间比较
git diff <branch1> <branch2>
# 比较缓存区和版本库差异,与下一条指令的效果一样
git diff --staged
# 比较缓存区和版本库差异,与上一条指令的效果一样
git diff --cached
# 仅仅比较统计信息
git diff --stat

但要注意的是,只有使用 git add 指令将文件文件到缓存区之后,文件的信息才会被记录,接下来我们做个简单演示,修改main.cpp,添加以下代码

#include <iostream>
using namespace std;

int main(){
  cout << "hello world" << endl;
}

通过git diff命令查看工作区与缓存区的文件差异,如下图

在这里插入图片描述

有两个关键词 ab,分别指的是缓存区和工作区,可以看出在b中的main.cpp文件多了 6 行代码

5. 将本地仓库提交同步到远程仓库

我们使用以下命令将本地代码推送到远端仓库

# 将当前分支 (默认是master) 推送到远端仓库的 master 分支
git push -u origin master

实际上提交成功之后,远端的 main.cpp 文件是空的,是因为本地版本库还是一个空的 main.cpp文件。虽然main.cpp 文件被修改了,但还未提交到本地的版本库。所以还需要进行下面的操作

# 将所有变更添加的缓存区
git add .
# 将缓存区的变更提交到 本地git版本库
git commit -m "修改main.cpp文件"
# 将本地版本库提交到远端仓库
git push -u origin master

此时,我们再浏览远端仓库,可以看到代码已经同步过去了。

四、总结

在这篇文章中,我们介绍了 git 最常用的指令,并完成了一些最基本的操作。在下一篇文章中,我们将进一步介绍 git 实用的技巧,帮助我们提高工作效率,欢迎持续关注!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客开发者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值