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

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:拉取请求,为项目贡献代码,请求项目管理者合并自己的代码

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/313482.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL基础知识——MySQL事务

事务背景 什么是事务&#xff1f; 一组由一个或多个数据库操作组成的操作组&#xff0c;能够原子的执行&#xff0c;且事务间相互独立&#xff1b; 简单来说&#xff0c;事务就是要保证一组数据库操作&#xff0c;要么全部成功&#xff0c;要么全部失败。 注&#xff1a;MyS…

TCGAplot在线版:输入基因,一键绘制TCGA基因表达与TMB相关性雷达图

1.TCGAplot简介 华科同济医院的王雄老师课题组利用TCGA数据库&#xff0c;开发了一个TCGA多组学数据泛癌分析和可视化R包TCGAplot[1]。用于泛癌表达以及基因表达与 TMB、MSI、TIME 和启动子甲基化之间相关性等分析。 2.TMB简介 肿瘤突变负荷&#xff08;Tumor Mutation Burd…

【LLM】认识LLM

文章目录 1.LLM1.1 LLM简介1.2 LLM发展1.3 市面常见的LLM1.4 LLM涌现的能力 2.RAG2.1 RAG简介2.2 RAG 的工作流程2.3 RAG 和 Finetune 对比2.4 RAG的使用场景分析 3. LangChain3.1 LangChain简介3.2 LangChain的核心组件3.3 LangChain 入门 4.开发 RAG 应用的整体流程5. 环境配…

线上扭蛋机小程序成为年轻人创业选择

随着大众娱乐消费观的提升&#xff0c;带给消费者神秘感和惊喜感的扭蛋机开始走红&#xff0c;成为一个拥有广阔发展空间的行业。在当下二次元文化的火热下&#xff0c;扭蛋机的受众群体也遍布到了各个年龄层&#xff0c;深受大众的喜爱。 然而&#xff0c;玩家对扭蛋机的需求…

陇剑杯 省赛 攻击者1 CTF wireshark 流量分析

陇剑杯 省赛 攻击者1 题目 链接&#xff1a;https://pan.baidu.com/s/1KSSXOVNPC5hu_Mf60uKM2A?pwdhaek 提取码&#xff1a;haek ├───LogAnalize │ ├───linux简单日志分析 │ │ linux-log_2.zip │ │ │ ├───misc日志分析 │ │ acce…

伦敦银过夜费之——不能忽略的成本因素

众所周知&#xff0c;伦敦银是收益很好的投资品种&#xff0c;因为它采用了资金杠杆的原理&#xff0c;使投资者可以放大自己本金&#xff0c;而且还可以双向交易&#xff0c;并实现t0的资金回转。但在实际交易的过程中&#xff0c;投资者要充分考虑各种交易费用&#xff0c;对…

Zynq学习笔记--AXI 总线仿真(AXI VIP)

目录 1. 概述 2. Simulation with AXI VIP 2.1 axi_vip_pkg 2.2 design_1_axi_vip_0_0_pkg 2.3 参数指定 3. 实例化注意事项 3.1 名称对应关系 3.2 寄存器地址 3.3 block design 1. 概述 AXI Verification IP&#xff08;AXI VIP&#xff09;是一种用于验证AXI总线协议的…

MySQL行格式(row format)

MySQL行格式&#xff08;row format&#xff09; 表的行格式决定了其行的物理存储方式&#xff0c;这反过来又会影响查询和 DML 操作的性能。随着单个磁盘页面容纳更多行&#xff0c;查询和索引查找可以更快地工作&#xff0c;缓冲池中需要的高速缓存内存更少&#xff0c;写出…

Linux的学习之路:6、Linux编译器-gcc/g++使用

摘要 本文主要是说一些gcc的使用&#xff0c;g和gcc使用一样就没有特殊讲述。 目录 摘要 一、背景知识 二、gcc如何完成 1、预处理(进行宏替换) 2、编译&#xff08;生成汇编&#xff09; 3、汇编&#xff08;生成机器可识别代码 4、链接&#xff08;生成可执行文件或…

安宝特方案 | AR工业解决方案系列-工厂督查

在工业4.0时代&#xff0c;增强现实&#xff08;AR&#xff09;技术正全面重塑传统工业生产&#xff0c;在工厂监督领域&#xff0c;其应用不仅大幅提升了生产效率、监测准确性和规范执行程度&#xff0c;而且为整体生产力带来了质的飞跃。 01 传统挑战与痛点 在制造业生产流程…

uni.uploadFile上传图片后台接收不到数据

今天遇到一个很奇怪的问题&#xff0c;通过使用uni.uploadFile上传文件时后端接收不到文件&#xff0c;查过很多资料&#xff0c;原来是自定义了header的Content-Type问题。取消即可&#xff0c;另把自定义文件上传的代码贴出来。 分析&#xff1a;当我们加上请求头的时候 不…

DY视频评论ID爬取采集工具|短视频评论怕两提取获客

DY评论批量抓取工具&#xff1a;轻松拓展客户群&#xff0c;实时监控用户反馈 在当今竞争激烈的市场环境下&#xff0c;了解用户的反馈和需求对于企业的发展至关重要。作为一款风靡全球的社交媒体平台&#xff0c;&#xff08;DY&#xff09;汇聚了大量用户&#xff0c;而这些…

SQL表连接详解:JOIN与逗号(,)的使用及其性能影响

省流版 在这个详细的解释中&#xff0c;我们将深入探讨SQL中表连接的概念&#xff0c;特别是JOIN和逗号&#xff08;,&#xff09;在连接表时的不同用法及其对查询性能的影响。通过实际示例和背后的逻辑分析&#xff0c;我们将揭示在不同场景下选择哪种连接方式更为合适。 1.…

ChatGPT及GIS、生物、地球、农业、气象、生态、环境科学领域案例

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

使用Docker部署Node.js

第一步&#xff1a;在Node.js项目的根目录中新建Dockerfile文件 # 使用官方 Node.js 镜像作为基础镜像 FROM node:latest# 设置工作目录 WORKDIR /usr/src/app# 将项目文件复制到容器中 COPY . .# 将npm源设置为淘宝镜像 RUN npm config set registry https://registry.npmmir…

算法部署 | 使用TensorRT部署AlphaPose姿态估计算法

项目应用场景 面向 AlphaPose 姿态估计算法的推理加速场景&#xff0c;项目采用 TensorRT 进行 GPU 算法加速推理。 项目效果 项目细节 > 具体参见项目 README.md (1) 模型转换 python pytorch2onnx.py --cfg ./configs/coco/resnet/256x192_res50_lr1e-3_1x.yaml --chec…

【机器学习300问】67、均方误差与交叉熵误差,两种损失函数的区别?

一、均方误差&#xff08;Mean Squared Error, MSE&#xff09; 假设你是一个教练&#xff0c;在指导学生射箭。每次射箭后&#xff0c;你可以测量子弹的落点距离靶心的差距&#xff08;误差&#xff09;。MSE就像是计算所以射击误差的平方后的平均值。它强调了每一次偏离靶心的…

python/pygame 挑战魂斗罗 笔记(三)

感觉最难的部分已经解决了&#xff0c;下面开始发射子弹。 一、建立ContraBullet.py文件&#xff0c;Bullit类&#xff1a; 1、设定子弹速度 Config.py中设定子弹移动速度为常量Constant.BULLET_SPEED 8。 2、载入子弹图片&#xff1a; 图片也是6张&#xff0c;子弹发出后…

盲人导航功能特点:革新出行体验的实时避障应用深度解析

作为一名资深记者&#xff0c;我有幸亲历并详尽报道一款专为盲人群体设计的导航应用叫做蝙蝠避障&#xff0c;它不仅提供了精准的路线指引&#xff0c;更创新性地融入了实时避障功能。这款应用凭借其盲人导航功能特点&#xff0c;正以前所未有的方式提升盲人的出行自由度与安全…

CSS导读 (CSS的三大特性 上)

&#xff08;大家好&#xff0c;今天我们将继续来学习CSS的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 五、CSS的三大特性 5.1 层叠性 5.2 继承性 5.2.1 行高的继承 5.3 优先级 小练习 五、CSS的三大特性 …