0
点赞
收藏
分享

微信扫一扫

Git 入门(附脑图)


目录

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


先来看一下本文的脑图:

Git 入门(附脑图)_远程仓库

1. Git概述

1.1 Git 简介

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

  • 本地仓库:是在开发人员自己电脑上的Git仓库
  • 远程仓库:是在远程服务器上的Git仓库
  • Git 入门(附脑图)_git_02

  • Clone:克隆,就是将远程仓库复制到本地
  • Push:推送,就是将本地仓库代码上传到远程仓库
  • Pull:拉取,就是将远程仓库代码下载到本地仓库

1.2 Git 工作流程

Git的工作流程如下:

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

1.3 Git 下载和安装

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

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

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

Git 入门(附脑图)_暂存区_04

  • 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 入门(附脑图)_git_05


每个Git远程仓库都有一个网络地址,点击克隆/下载按钮即可查看:

Git 入门(附脑图)_暂存区_06

我们还可以邀请其他用户成为仓库成员:

Git 入门(附脑图)_git_07

3. Git常用命令

3.1 环境配置

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

设置用户信息 :

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

查看配置信息

git config --list
git config user.name
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。暂存区是一个临时保存修改文件的地方

Git 入门(附脑图)_暂存区_08

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

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

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

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

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

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

3.5 本地仓库的操作

(1) git status

使用​​git status​​​查看文件状态,也可以使用​​git status –s​​ 使输出信息更加简洁

Git 入门(附脑图)_git_09


(2)git add我们可以看到下面的​​hello.txt​​​文件是未被跟踪状态,可以执行​​git add​​​ 命令将未跟踪的文件加入暂存区:​​git add hello.txt​​,加入暂存区之后:

Git 入门(附脑图)_暂存区_10


如果有很多需要加入缓存区的文件,可以执行命令:​​git add .​

(3)git reset

可以使用​​git reset​​​命令将暂存区的文件取消暂存:​​git reset hello.txt​​,取消之后:

Git 入门(附脑图)_暂存区_11


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

Git 入门(附脑图)_暂存区_12


(5)git rm可以使用​​git rm​​​ 命令删除文件:​​git rm hello.txt​​,删除之后的状态如下:

Git 入门(附脑图)_git_13


事实上,上面删除的只是工作区的文件,本地仓库的文件并没有删除,需要提交到本地仓库:​​git commit -m "delete hello.txt"​

(6)git log

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

还有两个命令:

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

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

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

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

// 所有以.a结尾的文件
*.a
// lib.a不能被忽略
!lib.a
// 文件名为TODO的文件被忽略
/TODO
// build目录下的文件被忽略
build/
// doc目录下的.txt文件被忽略
doc/*.txt
// doc目录下多层目录的所有以.pdf结尾的文件被忽略
doc/**/*.pdf

3.6 远程仓库的使用

(1)查看远程仓库

如果想查看已经配置的远程仓库服务器,可以运行 ​​git remote​​​ 命令。 它会列出指定的每一个远程服务器的简写。 如果已经克隆了远程仓库,那么至少应该能看到 ​​origin​​ ,这是 Git 克隆的仓库服务器的默认名字:

Git 入门(附脑图)_远程仓库_14


可以运行 ​​git remote -v​​ 命令来获取远程仓库的地址:fetch是抓取,push是推送

Git 入门(附脑图)_暂存区_15


使用​​git remote show origin​​ 命令可以查看更加详细的信息:

Git 入门(附脑图)_暂存区_16


(2)添加远程仓库

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

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

(3)从远程仓库克隆

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

Git 入门(附脑图)_远程仓库_17

(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 入门(附脑图)_远程仓库_18

  • ​git pull​​ 是从远程仓库获取最新版本并merge到本地仓库:
  • Git 入门(附脑图)_git_19

注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(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命令来标识冲突已解决,在提交,执行以下命令:

git add 文件名称
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/​​

下载完成之后,按照步骤进行安装,完成之后,在桌面单击右键,看到如下菜单,说明安装成功:

Git 入门(附脑图)_暂存区_20

5.2 TortoiseGit使用

(1)创建仓库

选择第二项,打开之后直接点确定即可:

Git 入门(附脑图)_远程仓库_21

(2)克隆仓库

  • 点击选择第一项:
  • Git 入门(附脑图)_远程仓库_22

  • 输入需要克隆的地址,点击确定即可:
  • Git 入门(附脑图)_git_23

  • 克隆完成:
  • Git 入门(附脑图)_暂存区_24

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

  • 右键单击需要添加到缓存区的文件,进行添加:
  • Git 入门(附脑图)_暂存区_25

  • 添加完成:
  • Git 入门(附脑图)_暂存区_26

  • 右键单击文件,选择提交:
  • Git 入门(附脑图)_git_27

  • 在message区域添加日志信息,并点击提交:
  • Git 入门(附脑图)_远程仓库_28

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

  • 在目录中右键单击,选择push:
  • Git 入门(附脑图)_远程仓库_29

  • 提交
  • Git 入门(附脑图)_远程仓库_30

  • 如果本地仓库和远程仓库没有关联,就需要将仓库的地址复制下来,打开上方界面的message按钮,添加地址:
  • Git 入门(附脑图)_远程仓库_31

  • 填写分支名称并提交:
  • Git 入门(附脑图)_远程仓库_32

  • (4)拉取代码
  • 在文件中点击右键,选择pull:
  • Git 入门(附脑图)_git_33

  • 确认拉取:
  • Git 入门(附脑图)_暂存区_34

  • (5)创建分支

Git 入门(附脑图)_暂存区_35


Git 入门(附脑图)_暂存区_36


(6)切换分支

Git 入门(附脑图)_远程仓库_37


Git 入门(附脑图)_暂存区_38


(7)合并分支

Git 入门(附脑图)_远程仓库_39


Git 入门(附脑图)_git_40


(8)推送指定分支到远程仓库

Git 入门(附脑图)_git_41

选择需要推送的分支,以及远程仓库的分支:

Git 入门(附脑图)_远程仓库_42

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

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​​生成如下的公钥和私钥:
  • Git 入门(附脑图)_暂存区_43

  • 其中上面是私钥,下面是公钥:
  • Git 入门(附脑图)_远程仓库_44

  • 复制公钥文件的内容至码云服务器:
    在「个人设置」->「安全设置」->「SSH公钥」->「添加公钥」 ,添加生成的 public key 添加到当前账户中。

Git 入门(附脑图)_git_45


其中标题会自动识别。

6.4 使用SSH协议

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


举报

相关推荐

0 条评论