【Git学习笔记(二)】Git的基本操作

开源 0

Git的基本操作

  • 前言
  • 正文
    • 1、Git本地仓库创建和一些基本概念
      • 1.1 本地仓库创建
      • 1.2 本地项目创建
      • 1.3 仓库区和工作区
      • 1.4 暂存区
      • 1.5 提交
      • 1.6 查看状态
      • 1.7 查看日志
    • 2、Git服务器和远程仓库创建
      • 2.1 搭建自己的Git服务器
      • 2.2 免费服务器
        • 2.2.1 github.com
        • 2.2.2 gitee.com
        • 2.2.3 创建远程仓库
    • 3、克隆
      • 3.1 https方式
      • 3.2 ssh方式
      • 3.3 服务器 ssh公钥添加
    • 4、添加、提交、推送、拉取
      • 4.1 添加
      • 4.2 提交
      • 4.3 推送
      • 4.4 拉取
    • 5、分支创建与合并
      • 5.1 创建分支
      • 5.2 切换分支
        • 5.2.1 通过切换/检出
        • 5.2.2 通过版本分支图进行切换
      • 5.3 合并分支
    • 6、冲突
      • 6.1 冲突如何产生
      • 6.2 如何解决冲突
      • 6.3 如何解决冲突
      • 7、忽略
      • 8、版本回退
        • 8.1 版本回退操作
        • 8.2 三种重置类型
        • 8.3 打标签
    • 9、子模块
    • 10、issue 和 PullRequest

前言

本文将从最基本的操作开始,逐步介绍如何创建本地仓库、连接远程仓库、克隆项目、添加文件、提交更改以及推送更新,通过本文的学习,将能够掌握Git的基本操作,为日后的项目开发打下坚实的基础。

正文

1、Git本地仓库创建和一些基本概念

1.1 本地仓库创建

在需要创建仓库的文件夹下,点击鼠标右键->选择Git Bash Here
在这里插入图片描述

输入 git init 指令:

在这里插入图片描述

创建成功后:

在这里插入图片描述

1.2 本地项目创建

创建项目: git init XXX

输入 git init tModels 指令:

在这里插入图片描述

创建成功后:
在这里插入图片描述

1.3 仓库区和工作区

.git 文件夹 称为仓库区 ,类似于一个数据库存储着每一次提交的变化;
.git 所在目录 称为工作区,在这里可以创建项目和其他文件.

1.4 暂存区

暂存区 是存储将要被提交的文件变化的区域

通过 git add <文件名> 指令可以把可以把文件添加到暂存区

在这里插入图片描述

添加到暂存区后,图标会变成如下所示:

在这里插入图片描述

如果文件太多,可以用 git add . 把所有的文件添加到暂存区
创建 2.txt、3.txt 文件:
在这里插入图片描述
在这里插入图片描述
添加成功后:
在这里插入图片描述

1.5 提交

使用 git commit -m "提交消息" 命令提交暂存区存储的变化并生成一个新的版本

git commit -m "初次提交"

提交后:

在这里插入图片描述

文件图标会变成如下所示:

在这里插入图片描述

如果不加 -m "提交消息"

先修改 2.txt 文件:
在这里插入图片描述

添加到暂存区后,只输入 git commit 指令,会进入下面的界面:

在这里插入图片描述

这是 linux 里面的 vim 程序,相当于 Windows 里面的 记事本;

简单介绍下 vim 的常用指令:

  • i 命令进入插入模式 ;
  • exc 退出插入模式;
  • shift zz 退出Vim编辑器;

在这里插入图片描述

1.6 查看状态

使用 git status 命令查看状态;

在这里插入图片描述

1.7 查看日志

使用 git log 命令查看日志;

在这里插入图片描述

2、Git服务器和远程仓库创建

2.1 搭建自己的Git服务器

有条件的话可以搭建自己的 Git 服务器

2.2 免费服务器

2.2.1 github.com

github:全球最大的开源项目托管平台

2.2.2 gitee.com

Gitee :也被称为“码云”,是中国领先的代码托管与社交化软件开发协作平台;
本专栏主要采用 Gitee 作为 Git 服务器,下面的操作也是基于 Gitee 服务器实现的

2.2.3 创建远程仓库
  • 注册 gitee 账号(这里不做过多介绍)
  • 创建仓库

在这里插入图片描述

  1. 输入仓库名称
    在这里插入图片描述

  2. 更改路径(也可以不更改)
    在这里插入图片描述

  3. 写仓库介绍
    在这里插入图片描述

  4. 设置仓库是私有还是开源
    在这里插入图片描述

  5. 初始化仓库:a、选择语言 b、添加 .gitignore c、添加开源许可证
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  6. 设置模板
    在这里插入图片描述
    在这里插入图片描述

3、克隆

3.1 https方式

  1. 首先获 HTTPS 的地址:
    在这里插入图片描述

  2. 输入 git clone "https地址" 指令
    在这里插入图片描述
    克隆成功后:
    在这里插入图片描述

  3. 如果是私有项目,第一次克隆需要我们输入 Git 的账号和密码

3.2 ssh方式

  • ssh 是一种开源非对称加密通信协议;

  • ssh 只是一种协议,有开源实现也有商业实现,Git 默认使用开源实现的 openssh;

  • ssh 通信需要一堆密钥(公和私一对),私钥留在自己电脑上,公钥给其他电脑;

  • 使用 Git Gui 生成密钥 并把公钥放在服务器上;
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    注意:点击 Generate Key 时会弹出一个 OpenSSH 的对话框,可以输入一个密码,这个密码是对公钥的再次加密,提高公钥的安全性
    在这里插入图片描述

  • 安装完第一次克隆会请求是否允许使用 ssh,需要我们输入一个 “yes”

3.3 服务器 ssh公钥添加

  • 设置
  • 安全设置
  • 添加公钥
    在这里插入图片描述

4、添加、提交、推送、拉取

下面的操作为了方便都使用 TortoiseGit 进行;后续会有介绍 Git 指令的文章;

4.1 添加

将文件添加到暂存区;

在这里插入图片描述

上图中
tExcelHelper.py 是已经添加过的状态
tFileINI.py 是未添加过的状态

添加方式:
在这里插入图片描述
成功添加后:
在这里插入图片描述

4.2 提交

提交只提交到本地仓库,需要推送才会把变化更新到服务器仓库
在这里插入图片描述
在日志信息中记录此次变更的信息:
在这里插入图片描述
成功提交后:
在这里插入图片描述

4.3 推送

在提交成功后,可以直接推送到服务器
注意:如果服务器版本比我们新,会推送不成功需要先拉取
在这里插入图片描述
在这里插入图片描述
推送成功:
在这里插入图片描述
这时刷新服务器,可以看到:
在这里插入图片描述

4.4 拉取

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

注意:拉取时应确保工作区整洁

5、分支创建与合并

master 是仓库的主分支,为了避免开发过程中程序员之间相互影响,一般选择创建一个新的分支来开发新功能;

5.1 创建分支

在这里插入图片描述

在这里插入图片描述

这时提交的话 还是显示提交到 master 分支,所以需要切换分支

在这里插入图片描述

5.2 切换分支

5.2.1 通过切换/检出

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.2.2 通过版本分支图进行切换

在这里插入图片描述

在这里插入图片描述

右键选择"切换/检出到(S) 分支名"

在这里插入图片描述

5.3 合并分支

如果在 “新的分支” 下创建新文件,在版本分支图中:

在这里插入图片描述

通过 “显示日志” 可以看到该分支下的变更信息

在这里插入图片描述

在这里插入图片描述

如果在 master 和 “新的分支” 下都有已提交的文件,那应该如何合并呢?

在这里插入图片描述

在这里插入图片描述

  • 首先要切换到主分支上

  • 选择"合并"
    在这里插入图片描述

  • 选择要合并到主分支上的分支
    在这里插入图片描述

可以看到已经合并成功:

在这里插入图片描述

6、冲突

6.1 冲突如何产生

两个分支修改了同一文件,合并的时候会发生冲突

例如:在 master 分支中修改 new.txt 文件
在这里插入图片描述
在 “新的分支” 分支中同样修改 new.txt 文件:
在这里插入图片描述

在这里插入图片描述

这时,如果想要把 “新的分支” 合并到 master 中来,合并会报错:

在这里插入图片描述

在这里插入图片描述

在两个分支中修改的 new.txt 文件图标变成:

在这里插入图片描述

打开之后:

在这里插入图片描述

6.2 如何解决冲突

协商修改冲突位置,并重新提交

在这里插入图片描述

会提示当前提交的文件是冲突的,需要手动解决:

在这里插入图片描述

也可以在合并失败时直接点击"解决"

在这里插入图片描述

双击要解决冲突的文件:

在这里插入图片描述

感叹号的这一行为有冲突的地方:

在这里插入图片描述

可以自己编辑文本,也可以右键选择优先使用左侧或者右侧文本:

在这里插入图片描述

然后点击 “保存” 选择 “标记为解决”:

在这里插入图片描述
’再次提交时会提示 “是一个特殊的提交”:
在这里插入图片描述

6.3 如何解决冲突

尽量避免冲突,如果有冲突:

  1. 先 pull 再修改;
  2. 确保自己正在修改的文件是最新版本的;
  3. 各自开发各自的模块,如果要修改公共文件,最好先确认有没有人正在修改;
  4. 不要擅自修改同事的代码

7、忽略

忽略文件:.gitignore

touch .gitignore 命令来创建一个忽略文件

在这里插入图片描述

  • 按文件名忽略文件夹:文件夹名/ ([Aa]忽略大小写)
  • 按路径忽略文件夹:/文件夹名(路径)/
  • 忽略文件:*.后缀名
  • 反忽略,对文件和文件夹都有效:!*.文件名!A/

注意:空文件夹会被自动忽略

8、版本回退

8.1 版本回退操作

在 “版本日志界面” 选择一个想要回退的节点,使用重置(Reset)命令:

在这里插入图片描述

在这里插入图片描述

8.2 三种重置类型

三种重置类型:
1、软重置(S):不更改工作区和索引;
2、混合(M):保持工作区不变,重置索引文件(重置暂存区);
3、硬重置(H):重置工作区和索引(丢弃所有本地变更,谨慎使用);

注意:
Head:当前分支的引用指针(重置就是移动Head这个指针)
Index:就是缓存区(被Add的,也可以说是将要提交的,文件的快照)
工作区:.git所在目录以及子目录

8.3 打标签

目的是放置硬重置后,再想恢复的情况
具体操作,选中版本后,右键,选择 “在此版本上创建标签”:
在这里插入图片描述

在这里插入图片描述

如果想要重置到 打标签 的这个版本,要选择 “标签(T)”:

在这里插入图片描述

9、子模块

子模块:就是一个 Git 仓库包含其他 Git 仓库
当我们需要把其他开源项目作为本项目的一个库,并可以随时拉取更新的时候
或者我们的项目需要分模块独立开发的时候可以使用子模块

添加子模块的操作:
在这里插入图片描述

在这里插入图片描述

添加子模块成功:

在这里插入图片描述

会自动生成 .gitmodules 文件(配置文件):

在这里插入图片描述

注意:克隆有子模块的仓库,需要选择递归
在这里插入图片描述

10、issue 和 PullRequest

issue:讨论

在这里插入图片描述

PullRequest:拉取请求,为项目贡献代码,请求项目管理者合并自己的代码

在这里插入图片描述

也许您对下面的内容还感兴趣: