Git 入门(附脑图)

目录

        1. Git概述
        • 1.1 Git 简介
        • 1.2 Git 工作流程
        • 1.3 Git 下载和安装
        1. Git 代码托管服务
        • 2.1 常用的Git代码托管服务
        • 2.2 使用码云代码托管服务
        1. Git常用命令
        • 3.1 环境配置
        • 3.2 获取Git仓库
        • 3.3 概念区分
        • 3.4 Git工作目录下文件的两种状态
        • 3.5 本地仓库的操作
        • 3.6 远程仓库的使用
        • 3.7 Git 分支
        • 3.8 Git 标签
        1. 在vscode中使用Git
        • 4.1 初始化版本库
        • 4.2 版本提交
        • 4.3 版本退回
        • 4.4 管理修改
        • 4.5 删除文件
        1. 使用TortoiseGit管理文件版本
        • 5.1 TortoiseGit下载与安装
        • 5.2 TortoiseGit使用
        1. 使用SSH协议传输数据
        • 6.1 Git支持的协议
        • 6.2 什么是SSH协议?
        • 6.3 配置SSH协议
        • 6.4 使用SSH协议

先来看一下本文的脑图:

在这里插入图片描述

1. Git概述

1.1 Git 简介

Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS) ,分为两种类型的仓库:本地仓库和远程仓库

  • 本地仓库:是在开发人员自己电脑上的Git仓库
  • 远程仓库:是在远程服务器上的Git仓库
    在这里插入图片描述
  • Clone:克隆,就是将远程仓库复制到本地
  • Push:推送,就是将本地仓库代码上传到远程仓库
  • Pull:拉取,就是将远程仓库代码下载到本地仓库

1.2 Git 工作流程

Git的工作流程如下:

  • 从远程仓库中克隆代码到本地仓库
  • 从本地仓库中checkout代码,然后进行代码的修改
  • 在提交前先将代码提交到缓存区
  • 提交到本地仓库,本地仓库中保存修改的各个历史版本
  • 修改完成后,需要和团队成员共享代码时,将代码push到远程仓库在这里插入图片描述

1.3 Git 下载和安装

下载地址:https://git-scm.com/download

下载完成之后,按照步骤安装即可。

安装完成之后,在电脑桌面点击右键,如果能看到以下两个菜单就说明Git安装成功:
在这里插入图片描述

  • Git GUI:Git提供的图形界面工具
  • Git Bash:Git提供的命令行工具

2. Git 代码托管服务

2.1 常用的Git代码托管服务

gitHub( 地址:https://github.com/ )是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub

码云(地址: https://gitee.com/ )是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快

2.2 使用码云代码托管服务

使用马云的相关服务,首先要创建一个账号,然后登陆创建的账号,之后开始创建Git仓库:
在这里插入图片描述
每个Git远程仓库都有一个网络地址,点击克隆/下载按钮即可查看:
在这里插入图片描述

我们还可以邀请其他用户成为仓库成员:
在这里插入图片描述

3. Git常用命令

3.1 环境配置

当安装Git后首先要做的事情是设置用户名称和email地址。每次Git提交都会使用该用户信息。

设置用户信息 :

  1. git config --global user.name "name"
  2. git config --global user.email "12345@qq.com"

查看配置信息

  1. git config --list
  2. git config user.name
  3. git config user.email

通过上面的命令设置的信息会保存在本地用户文件夹的.gitconfig文件中。

3.2 获取Git仓库

要使用Git对我们的代码进行版本控制,首先需要获得Git仓库。获取Git仓库通常有两种方式:

  • 在本地初始化一个Git仓库
  • 从远程仓库克隆

(1)在本地初始化一个Git仓库

执行步骤如下:

  • 创建一个空目录
  • 在该目录中,点击右键打开Git bash窗口
  • 执行 git init 命令

注意:创建完成之后,就可以在目录中看到一个名为.git的文件夹(此文件夹为隐藏文件夹)。

(2)从远程仓库克隆

可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地。

命令形式为:git clone 远程Git仓库地址

3.3 概念区分

  • 版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
  • 工作目录(工作区):包含.git文件夹的目录就是工作目录,主要用于存放开发的代码
  • 暂存区.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方

在这里插入图片描述

3.4 Git工作目录下文件的两种状态

Git工作目录下的文件存在两种状态:

  • untracked 未跟踪(未被纳入版本控制,即该文件没有被Git版本管理)
  • tracked 已跟踪(被纳入版本控制,即该文件已被Git版本管理)

其中已跟踪状态又可以细分为以下三种:

  • Unmodified 未修改状态
  • Modified 已修改状态
  • Staged 已暂存状态

这些文件的状态会跟随我们执行的Git命令而发生变化。

3.5 本地仓库的操作

(1) git status

使用git status查看文件状态,也可以使用git status –s 使输出信息更加简洁
在这里插入图片描述
(2)git add

我们可以看到下面的hello.txt文件是未被跟踪状态,可以执行git add 命令将未跟踪的文件加入暂存区:git add hello.txt,加入暂存区之后:
在这里插入图片描述
如果有很多需要加入缓存区的文件,可以执行命令:git add .

(3)git reset

可以使用git reset命令将暂存区的文件取消暂存:git reset hello.txt,取消之后:
在这里插入图片描述
(4)git commit

可以使用git commit 命令将暂存区的文件修改提交到本地仓库,其中-m是一个参数表示message 日志信息,参数后面要加一个日志信息,用双引号括起来。
在这里插入图片描述
(5)git rm

可以使用git rm 命令删除文件:git rm hello.txt,删除之后的状态如下:
在这里插入图片描述
事实上,上面删除的只是工作区的文件,本地仓库的文件并没有删除,需要提交到本地仓库:git commit -m "delete hello.txt"

(6)git log

可以使用git log命令来查看日志记录

还有两个命令:

  1. // 显示每次提交的文件增删数量
  2. git log --stat
  3. // 显示每次提交删改的绝对数量
  4. git log -p

注意:文件名后面 + 和 - 的数量是这个提交造成的更改中增删的相对比例

(7)将文件添加至忽略列表

有时候,有些文件无需纳入Git的管理,也不希望出现在未跟踪文件列中中,这些往往是自动生成的文件。比如日志文件,或者编译过程中创建的临时文件等。在这种情况下,我们可以在工作目录中创建一个文件: .gitignore ,列出要忽略的文件模式,来看一个示例:

  1. // 所有以.a结尾的文件
  2. *.a
  3. // lib.a不能被忽略
  4. !lib.a
  5. // 文件名为TODO的文件被忽略
  6. /TODO
  7. // build目录下的文件被忽略
  8. build/
  9. // doc目录下的.txt文件被忽略
  10. doc/*.txt // doc目录下多层目录的所有以.pdf结尾的文件被忽略 doc/**/*.pdf

3.6 远程仓库的使用

(1)查看远程仓库

如果想查看已经配置的远程仓库服务器,可以运行 git remote 命令。 它会列出指定的每一个远程服务器的简写。 如果已经克隆了远程仓库,那么至少应该能看到 origin ,这是 Git 克隆的仓库服务器的默认名字:
在这里插入图片描述
可以运行 git remote -v 命令来获取远程仓库的地址:fetch是抓取,push是推送
在这里插入图片描述
使用git remote show origin 命令可以查看更加详细的信息:

在这里插入图片描述
(2)添加远程仓库

运行 git remote add <shortname> <url> 添加一个新的远程 Git 仓库,同时指定一个可以引用的简写,其中:

  • shortname:仓库名称(默认是origin)
  • url:远程仓库地址

(3)从远程仓库克隆

使用 git clone 命令可以拷贝Git仓库中几乎所有的数据(包括日志信息,历史记录等)。当执行 git clone 命令时,默认配置下远程Git仓库中的每一个文件的每一个版本都将会被拉取下来:
在这里插入图片描述

(4)移除无效的远程仓库

使用 git remote rm命令来移除远程仓库,但是该命令只是从本地移除远程仓库的记录(也就是接触本地仓库和远程仓库的关系),并不会真正影响到远程仓库。

命令:git remote rm origin

(5)从远程仓库抓取与拉取

在拉取之前,需要先添加远程仓库的地址:git remote add remote 远程仓库地址

  • git fetch 是从远程仓库获取最新版本到本地仓库,不会自动merge(合并数据):

这里可以不用填写origin master,抓取到本地之后需要执行git merge origin/master来合并到工作区。(远端仓库remote默认仓库为origin,可以写origi,也可以写remote)
在这里插入图片描述

  • git pull 是从远程仓库获取最新版本并merge到本地仓库:
    在这里插入图片描述

注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories ),解决此问题可以在git pull命令后加入参数--allow-unrelated-histories

(6)推送到远程仓库

使用git push来推送本地代码到远程仓库,第一次推送需要输入远程仓库账号的账号密码

命令:git push remote master

3.7 Git 分支

版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。Git 的master分支并不是一个特殊分支。 它跟其它分支没有区别。 之所以几乎每一个仓库都有 master 分支,是因为git init 命令默认创建master分支。

(1)查看分支

当前处于的分支前面有一个*,使用以下命令来查看分支:

  • 列出所有本地分支:git branch
  • 列出所有远程分支:git branch -r
  • 列出所有本地分支和远程分支:git branch -a

(2)创建分支

命令:git branch 分支名称

(3)切换分支

命令:git checkout 分支名称

(4)推送至远程仓库分支

要切换到需要推送的分支,在执行推送的命令。

命令:git push remote

(5)合并分支

命令:git merge 分支名称

如果我们想将A分支合并到B分支,就要先切换到B分支,然后执行命令:git merge A

注意:如果在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没办法合并它们,同时会提示文件冲突。此时需要我们打开冲突的文件并修复冲突内容,最后执行git add命令来标识冲突已解决,在提交,执行以下命令:

  1. git add 文件名称
  2. git commit

注意:这些操作都是本地的操作,如果需要推动到远程仓库,还需要执行git push remote master来推送到远程分支。

(6)删除分支

命令:git branch -d 分支名称

注意:如果要删除的分支中进行了一些开发动作,此时执行上面的删除命令并不会删除分支,如果坚持要删除此分支,可以将命令中的-d参数改为-D

上面这些命令删除的都是本地的分支,如果想要删除远程仓库中的分支,可以使用命令:git push remote –d 分支名称来删除。

3.8 Git 标签

Git可以给历史中的某一次提交打上标签,以示重要。比较有代表性的是人们会使用这个功能来标记发布节点。标签指的是某个分支某个特定时间点的状态,通过标签可以很方便的切换到标记时的状态。

注意:这里使用tName来表示标签的名称。

(1)列出已用标签

  • 列出所有的tag:git tag
  • 查看tag信息:git show tName

(2)创建新标签

命令:git tag tName

(3)将标签推送至远程仓库

  • 提交某一个标签:git push remote tName
  • 提交所有标签:git push remote --tags

(4)检出标签

新建一个分支,指向某一个tag:git checkout -b branch tName

其中branch是新建的分支的名称。

(5)删除标签

  • 删除本地标签:git tag -d tName
  • 删除远程标签:git push remote :ref/tags/tName

4. 在vscode中使用Git

在vscode中有一个插件:GitLens,可以很方便的对源代码进行管理。

4.1 初始化版本库

  • 使用快捷键:Ctrl+` 来打开vscode的终端。
  • 使用cd命令可以打开文件:cd 文件名
  • 初始化版本库:git init (通过git init将这个目录变成Git可以管理的仓库)
  • 或者是直接从远程仓库克隆项目:git clone 远程仓库地址

4.2 版本提交

  • git add <file>文件名或文件夹名称或者.代表所有:将文件添加到暂存区
  • git commit -m "描述" :将暂存区的文件提交到本地仓库
  • git status :查看提交修改的文件
  • git branch :查看当前分支
  • git branch <分支名字>:创建分支
  • git checkout <分支名字>:切换分支
  • git merge <分支名字>:(不是当前的分支)合并某分支到当前分支
  • git branch -d <分支名字>:删除分支
  • git push origin master 上传本地指定分支到远程仓库
  • git pull [branch]: 取回远程仓库的变化,并与本地分支合并

4.3 版本退回

  • git reset --hard HEAD^:回退到上一个版本(可以多次使用)
    在回退过程中会做两件事:1.修改了HEAD指向(仓库当前版本回退到上个),2.将仓库上个版本的文件覆盖到暂存区域,用以丢弃上次的提交,(工作目录,文件夹中的文件还没变)
  • git reset --hard HEAD^^:回退到上两个版本
  • git reset --hard :将暂存区和工作区所有文件恢复成和HEAD一样
  • git reset 文件名:将暂存区指定文件恢复成和HEAD一样
  • git log:查看提交历史

hard后面跟的版本号没必要全部写出来,git会自动去补全匹配。

4.4 管理修改

  • git diff 文件名:比较某文件工作区和暂存区的差异
  • git diff --cached 文件名:比较某文件暂存区和HEAD的差异
  • git diff HEAD 文件名:比较某文件工作区和HEAD的差异
  • git diff : 比较暂存区和工作区的所有差异
  • git diff --cached:比较暂存区和HEAD的所有差异
  • git checkout 文件名:将工作区指定文件恢复成和和暂存区一样

4.5 删除文件

  • git rm 文件名:删除指定文件

5. 使用TortoiseGit管理文件版本

5.1 TortoiseGit下载与安装

TortoiseGit是一款开源的Git图界面工具,使用TortoiseGit可以简化Git的相关操作(本质上还是执行Git的相关命令)

TortoiseGit下载地址:https://tortoisegit.org/download/

下载完成之后,按照步骤进行安装,完成之后,在桌面单击右键,看到如下菜单,说明安装成功:
在这里插入图片描述

5.2 TortoiseGit使用

(1)创建仓库

选择第二项,打开之后直接点确定即可:
在这里插入图片描述

(2)克隆仓库

  • 点击选择第一项:
    在这里插入图片描述
  • 输入需要克隆的地址,点击确定即可:
    在这里插入图片描述
  • 克隆完成:
    在这里插入图片描述

(3)添加到暂存区、提交文件

  • 右键单击需要添加到缓存区的文件,进行添加:
    在这里插入图片描述
  • 添加完成:
    在这里插入图片描述
  • 右键单击文件,选择提交:
    在这里插入图片描述
  • 在message区域添加日志信息,并点击提交:
    在这里插入图片描述

(3)推送本地仓库到远程仓库

  • 在目录中右键单击,选择push:
    在这里插入图片描述
  • 提交
    在这里插入图片描述
  • 如果本地仓库和远程仓库没有关联,就需要将仓库的地址复制下来,打开上方界面的message按钮,添加地址:
    在这里插入图片描述
  • 填写分支名称并提交:
    在这里插入图片描述
    (4)拉取代码
  • 在文件中点击右键,选择pull:
    在这里插入图片描述
  • 确认拉取:
    在这里插入图片描述
    (5)创建分支

在这里插入图片描述
在这里插入图片描述
(6)切换分支
在这里插入图片描述
在这里插入图片描述
(7)合并分支

在这里插入图片描述
在这里插入图片描述
(8)推送指定分支到远程仓库

在这里插入图片描述

选择需要推送的分支,以及远程仓库的分支:
在这里插入图片描述

扯了这么多,感觉这玩意没啥用,不如命令行来的干脆~~~略略略

6. 使用SSH协议传输数据

6.1 Git支持的协议

由于Git远程仓库并不在我们本地,所以当我们使用远程仓库的时候就会涉及到数据的网络传输,Git支持多种网络传输协议:

  • 本地协议(Local)
  • HTTPS协议
  • SSH(Secure Shell)协议
  • Git协议

上面的操作,我们使用的都是HTTPS协议进行的。码云上支持的是HTTPS协议和SSH协议。下面就来学习一下SSH协议。

6.2 什么是SSH协议?

SSH是Secure Shell(安全外壳协议)的缩写,由IETF的网络小组所指定。SSH是目前较可靠,专门为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。

由于本地Git仓库和远程仓库之间的传输是通过SSH加密的,所以必须要让远程服务器认证你的SSH key,在此之前必须生成SSH key。

在使用SSH协议通信之前,推荐使用基于秘钥的验证方式,必须为自己创建一对秘钥(公钥和私钥),并把公钥放在需要访问的服务器上。

6.3 配置SSH协议

可以使用GIT提供的命令行工具Git Bash 来生成公钥和私钥,具体步骤如下:

  • 使用命令ssh-keygen -t rsa生成公钥和私钥,执行完之后在windows本地用户.ssh目录:C:\Users\用户名\.ssh生成如下的公钥和私钥:
    在这里插入图片描述
    其中上面是私钥,下面是公钥:
    在这里插入图片描述
  • 复制公钥文件的内容至码云服务器:
    在「个人设置」->「安全设置」->「SSH公钥」->「添加公钥」 ,添加生成的 public key 添加到当前账户中。

在这里插入图片描述
其中标题会自动识别。

6.4 使用SSH协议

配置完成之后,就可以复制仓库的SSH协议地址,在GIt中使用即可。

发表评论

表情:
评论列表 (有 0 条评论,1人围观)

还没有评论,来说两句吧...

相关阅读