Git:从配置到合并冲突

目录

        1.前言

        2.Git的下载与初始化配置

        3.Git中新建仓库

        4.Git的工作区域和文件状态

        5.Git中查看操作和提交记录

        6.Git中添加和提交文件

        7.Git中回退提交版本

        8.Git中查看版本间的差异

        9.Git中删除文件

        10.Git中忽略指定文件

        11.Git中配置SSH密钥

        12.Git中关联克隆仓库

        13.Git中关联本地仓库和远程仓库

        14.Git中拉取远程仓库内容和提交本地仓库

        15.Git中的分支

        16.Git中解决合并冲突


前言

        本章将重点讲解Git的使用。Git是是目前世界上最流行的版本控制系统,广泛应用于软件开发中,帮助开发者管理代码的变更历史,支持多人协作开发。了解如何使用Git,如何提交代码,如何解决冲突,能帮助我们更快的上手团队项目


Git的下载与初始化配置

        关于Git的下载可以通过官网进行下载,以下是官网链接:

https://git-scm.com/downloadsicon-default.png?t=N7T8https://git-scm.com/downloads

图1.如何下载Git

        在下载完Git后,我们可点击右键,选择Open Git Bash here打开Git命令窗口

图2.打开Git命令窗口

        打开窗口后,我们可以通过以下命令对Git进行简单的使用以及配置:

                1.使用git -v命令查看Git版本信息

git -v

        

图3.查看Git版本信息

                2.使用git -config命令配置信息

git config --global --list    //查看配置信息
git config --global user.name "名字"         //配置用户名
git config --global user.email "邮箱"        //配置用户邮箱
git congig --global credential.helper store  //保存配置信息

//其中--global代表全局配置,所有仓库都生效
//可替换为--system,代表系统配置,对所有用户的生效

图4.初始化Git配置信息


Git中新建仓库

        在Git中有两种命令用于创建仓库,所谓仓库就类似于文件夹,区别于普通文件夹的点在于仓库存在一个隐藏的.git文件,该文件存放了仓库的所有数据,若删除了.git文件则代表删除了该仓库。以下便是创建仓库的两种方式:

        1.使用git init命令在指定文件夹下创建仓库

git init

图5.使用git init命令创建仓库        

        2.使用git clone命令克隆远程仓库

git clone "远程地址"

示例:git clone https://github.com/3020Xmy/GPTDemo

图6.使用git clone命令克隆远程仓库


Git的工作区域和文件状态

        Git的工作区域分为工作区,暂存区和本地仓库,可参考下图:

图7.Git的工作区域

        Git的文件状态分为以下四种:

                1.未跟踪:新创建的文件,未被Git管理的文件

                2.未修改:被Git管理的文件,但内容未被修改的文件

                3.已修改:被Git管理的文件,且内容被修改的文件

                4.已暂存:在已修改的状态下,被添加到暂存区的文件


Git中查看操作和提交记录

        由于在多人项目中,每一个人的操作和提交记录都不一样,我们可以通过以下几个命令查看用户的操作记录和提交记录:

        1.使用git reflog命令查看操作历史记录

git reflog

图8.查看操作历史记录

        2.使用git log命令查看提交目录

git log

图9.查看提交目录

        3.使用git log --online命令查看简洁的提交记录

git log --online

图10.查看简洁的提交记录


Git中添加和提交文件

        在Git中如果要把写好的代码提交到项目中,需要将存放于工作区的文件使用add指令提交至暂存区后,再使用commit命令提交至本地仓库,下面介绍几个命令方便对文件进行状态的跟踪,添加和提交等操作

        1.使用git status命令查看仓库状态

git status

        2.使用git add命令将文件添加至暂存区

git add 文件名   //添加指定文件
git add .        //添加所有文件

示例:git add 1.txt

        3.使用git commit命令将文件提交至本地仓库

git commit -m "提交备注"    //使用-m备注提交的信息
git commit //提交至本地仓库(默认跳转到Vim添加备注信息)

示例:git commit -m "第一次提交"

       4.使用git commit命令将文件提交至本地仓库

git commit -a -m "提交备注"    //一次性完成添加和提交文件

示例:git commit -a -m "第一次提交"

        针对以上几个命令,是我们在使用Git的时候比较常用的命令

图11.文件的添加和提交操作


Git中回退提交版本

        由于使用Git提交版本不一定是一次,而是多次。为了在当前版本出现问题后,我们能通过还原之前的代码来使其重构项目(当然这是下下策,但是好用,嘎嘎好用)。要实现这一功能,我们需要使用reset命令:

        1.使用git reset --hare命令回退版本,工作区和暂存区不会保存内容

git reset --hare "版本号"

图12.使用git reset --hare命令回退版本     

        2.使用git reset --sort命令回退版本,工作区和暂存区会保存内容

git reset --sort "版本号"

图13.使用git reset --sort命令回退版本  

        3.使用git reset -- mixed命令回退版本,工作区保存内容,暂存区不保存内容

git reset -- mixed "版本号"

图14.使用git reset -- mixed命令回退版本  


Git中查看版本间的差异

        在使用Git提交的版本之间会存在代码或文件间的差异,要阅读差异了解版本迭代后更新了什么数据,可以使用diff命令来查看版本间的差异,以下便是git diff命令的使用方式:

        1.使用git diff命令比较工作区和暂存区间的差异

git diff

        2.使用git diff HEAD命令比较工作区和暂存区与本地仓库间的差异

git diff HEAD

        3.使用git diff --cached命令比较暂存区与本地仓库间的差异

git diff --cached

        4.使用git diff --staged命令比较暂存区与本地仓库间的差异

git diff --staged

        5.使用git diff命令比较版本间的差异

git diff "版本号1" "版本号2"

        6.使用git diff命令比较版本间指定文件的差异

git diff "版本号1" "版本号2" "文件名"

        7.使用git diff命令比较分支间的差异

git diff "分支号1" "分支号2"

 图15.使用git diff命令查看版本间的差异


Git中删除文件

        Git中删除文件的操作与Linux中类似,也是使用rm命令,区别在于前面还需要加上git,而且在使用Git删除文件后,不要忘记提交,以下就是rm命令的使用方法:

        1.使用git rm命令将文件从工作区和暂存区删除

git rm "文件名"

        2.使用git rm --cached命令把暂存区中的文件删除,保留工作区的文件

git rm --cached "文件名"

        3.使用git rm命令递归的删除某个目录下的所有文件

git rm -r *

        

图16.使用git rm命令删除指定文件


Git中忽略指定文件

        在Git中存在一个.gitignore文件,该文件用于将指定的文件忽略,不保存至版本库中。在Git中有以下几个文件建议忽略:

                1.系统或者软件自动生成的文件

                2.编译产生的中间文件和结果文件

                3.运行时生成的日志文件,缓存文件,临时文件

                4.涉及身份,密码,口令,密钥等敏感信息文件

        如何将指定的文件添加至.gitignore文件中呢?可以使用以下命令:

                1.使用echo命令将指定文件添加至.gitignore文件

echo "文件名" > .gitignore

图17.使用echo命令忽略指定文件

                        2.使用vi命令修改.gitignore文件忽略指定文件        

图18.使用vi命令忽略指定文件

        使用.gitignore命令忽略的文件命名规则符合Blob模式的匹配,具体参考如下:

                1.*:匹配任意字符

                2.?:匹配单个字符

                3.[]:匹配列表中单个字符

                4.**/:匹配任意长度的目录结构,包括子目录

*.txt //将匹配任何以 .txt 结尾的文件,如WildPointer.txt 等
?.txt //将匹配任何以单个字符开头和.txt结尾的文件,如a.txt等
[abc].txt //将匹配以a、b或c开头和.txt结尾的文件,如a.txt等
**/*.txt //将匹配任意目录下的任何.txt 文件

        PS:使用.gitignore命令忽略的文件不能是已经提交到版本库中的文件


Git中配置SSH密钥

        要使用Git关联本地仓库和远程仓库,先需要在GitHub中创建一个仓库,具体参考下图:

图19.在GitHub中创建仓库

        创建好仓库后,我们需要配置SSH密钥,以下是配置SSH密钥的步骤:

                1.进入Git根目录中的.shh文件(位于安装Git的路径下的etc文件中)

                2.使用ssh-keygen -t rsa -b 4096命令新建SSH密钥

ssh-keygen -t rsa -b 4096

                3.生成的文件中,将以.phb结尾的文件(公钥文件)设置到GitHub中

图20.新增SSH密钥

                4.创建config文件,在访问GitHub时指定使用的SSH密钥

Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.shh/"文件名"

PS:用于博主已经配置了SSH密钥,所以这里简略概括流程,具体可以百度其他详细教学,具体的了解配置SSH密钥的过程,确保密钥的配置成功


Git中关联克隆仓库

        在Git中可以使用clone命令克隆仓库,在克隆的实现前需要先配置好SSH密钥

git clone "仓库地址"

示例:git clone https://github.com/3020Xmy/GPTDemo

Git中关联本地仓库和远程仓库

        当我们在GitHub创建好仓库后,我们先在本地创建好仓库,返回到GitHub创建仓库完成的页面会提示你如何关联本地仓库:

图21.关联本地仓库和远程仓库

        在关联完本地仓库和远程仓库后,我们可以使用git remote -v命令查看当前窗口对应的远程仓库和别名:

git remote -v

图22.查看当前仓库关联远程仓库


Git中拉取远程仓库内容和提交本地仓库

        在Git中要实现拉取远程仓库内容和提交本地仓库分别需要执行两个命令:

                1.git pull:将远程仓库的内容更新至本地仓库

git pull    //将远程仓库的内容更新至本地仓库

                2.git push:将本地仓库的内容更新至远程仓库

git push    //将本地仓库的内容更新至远程仓库

Git中的分支

        Git 分支是 Git 的一个核心功能,它允许开发者在不同的开发线上独立工作,而不会影响主代码库。以下是 Git 分支的一些基本概念和操作:

                1.主分支:通常是主要的、稳定的分支,包含了所有经过测试和审核的提交

                2.开发分支:通常基于主分支创建,用于开发新功能或进行较大更改

                3.特性分支:从开发分支创建,用于开发特定的新功能或修复一个特定的问题

                4.发布分支:通常在准备发布新版本时创建,用于最终的测试和准备发布

图23.分支示例  

        在了解Git中分支的概念后,我们需要了解Git中对分支的操作:

                1.git branch命令查看当前仓库的所有分支

git branch

                2.git branch "分支名"命令创建新的分支

git branch "分支名"
示例: git breanch Wild

                3.git checkout "分支名"命令切换到指定的分支

git checkout "分支名"
示例:git checkout Wild

                4.git switch "分支名"命令切换到指定的分支(建议使用)

git switch "分支名"
示例:git switch Wild

                5.git merge "分支名"命令将指定的分支合并到当前分支

git merge "分支名"
示例:git merge Wild

                6.git log --graph --oneline --decorate --all命令查看分支图

git log --graph --oneline --decorate --all

                7.git branch -d "分支名"命令删除被合并的分支(只能删除被合并的)

git branch -d "分支名"
示例:git branch -d Wild

                8.git branch -D "分支名"命令强制删除分支

git branch -D "分支名"
示例:git branch -D Wild

图24.分支创建与查看示例  

        PS:使用git switc切换分支是因为该命令更直观,且会提供异常警告


Git中解决合并冲突

        在合并分支时,可能会发送合并冲突的问题,这通常发生在两个或多个开发者对同一部分代码进行了更改,而这些更改在合并时无法自动合并,此时则需要我们解决冲突,具体操作如下:

        1.冲突产生的提示:

图25.冲突提示

        2.查看冲突文件

图26.查看冲突文件

        3.解决冲突

图27.解决冲突


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

核心社群营销和覆盖区域选型

目录 一、背景介绍 (一)核心流程 (二)用户进群 (三)内容匹配 (四)数据追踪 (五)风险管控 二、业界调研 三、聚焦群覆盖区域 (一&#xf…

【单片机毕业设计9-基于stm32c8t6的酒窖监测系统】

【单片机毕业设计9-基于stm32c8t6的酒窖监测系统】 前言一、功能介绍二、硬件部分三、软件部分总结 前言 🔥这里是小殷学长,单片机毕业设计篇9基于stm32的酒窖监测系统 🧿创作不易,拒绝白嫖可私 一、功能介绍 -------------------…

【Modelground】个人AI产品MVP迭代平台(5)——神投手(实时投篮检测游戏)

文章目录 介绍篮框识别进球算法离屏渲染总结 介绍 神投手是我开发的一款移动端web实时投篮检测游戏,基于Mediapipe对象检测模型,提供数据集,训练出可识别篮框的模型。利用图像处理算法,检测篮球进框的场景。提供了两种模式&#…

计算机组成原理之指令寻址

一、顺序寻址 1、定长指令字结构 2、变长指令字结构 二、跳跃寻址 三、数据寻址 1、直接寻址 2、间接寻址 3、寄存器寻址 寄存器间接寻址 4、隐含寻址 5、立即寻址 6、偏移寻址 1、基址寻址 2、变址寻址 3、相对寻址

机器学习周记(第四十二周:AT-LSTM)2024.6.3~2024.6.9

目录 摘要Abstract一、文献阅读1. 题目2. abstract3. 网络架构3.1 LSTM3.2 注意力机制概述3.3 AT-LSTM3.4 数据预处理 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程4.3.1 训练参数4.3.2 数据集4.3.3 实验设置4.3.4 实验结果 5. 基于pytorch的transformer 摘要 本周阅读…

【ArcGISPro SDK】构建多面体要素

结果展示 每个面构建顺序 代码 using ArcGIS.Core.CIM; using ArcGIS.Core.Data; using ArcGIS.Core.Geometry; using ArcGIS.Desktop.Catalog; using ArcGIS.Desktop.Core; using ArcGIS.Desktop.Editing; using ArcGIS.Desktop.Extensions; using ArcGIS.Desktop.Framework;…

基于AT89C51单片机的红外防盗报警器设计

第一章 绪论1.1 选题背景 随着社会科学的不断进步和发展,人们生活水平得到很大的提高,对个人私有财产的保护越来越重视,因而对于防盗的措施提出了更高的要求。本设计就是为了满足现代生活防盗的需要而设计的应用于家庭、车库、仓库和保险柜等处进行防盗监控的无线防盗报警装…

安装搭建java版的悟空crm遇到 网络错误请稍候再试 终极解决办法(hrm人力资源模块)

java版 项目目录 ├── build – webpack 配置文件 ├── config – 项目配置文件 ├── src – 源码目录 │ ├── api – axios请求接口 │ ├── assets – 静态图片资源文件 │ ├── components – 通用组件 │ ├── directives – 通用指令 │ ├── filters –…

Objective-C之通过协议提供匿名对象

概述 通过协议提供匿名对象的设计模式,遵循了面向对象设计的多项重要原则: 接口隔离原则:通过定义细粒度的协议来避免实现庞大的接口。依赖倒置原则:高层模块依赖于抽象协议,而不是具体实现。里氏替换原则&#xff1…

计算机网络9——无线网络和移动网络2无线个人区域网 WPAN

文章目录 一、蓝牙系统二、低速 WPAN三、高速 WPAN 无线个人区域网WPAN(Wireless Personal Area Network)就是在个人工作的地方把属于个人使用的电子设备(如便携式电脑、平板电脑、便携式打印机以及蜂窝电话等)用无线技术连接起来自组网络,不需要使用接入点AP&#…

nlp学习笔记

目录 很多入门例子 bert chinese 很多入门例子 https://github.com/lansinuote/Huggingface_Toturials bert chinese import torch import torch.nn as nn from transformers import AutoTokenizer, AutoModel, BertModel, TFBertModel, BertTokenizer# youpath = D:/bert-…

彩虹易支付最新版源码

源码简介 彩虹易支付最新版源码,更新时间为5.1号 2024/05/01: 1.更换全新的手机版支付页面风格 2.聚合收款码支持填写备注 3.后台支付统计新增利润、代付统计 4.删除结算记录支持直接退回商户金额 安装环境 1.PHP版本>7.4 2.Mysql数据库 安装教…

springCloudAlibaba之分布式事务组件---seata

Seata Sea学习分布式事务Seata二阶段提交协议AT模式 Sea学习 事务:事务是访问数据库并更新数据库中各项数据的一个程序执行单元。在关系数据库中,一个事务由一组或多组SQL语句组成。事务应该具有4个属性:原子性、一致性、隔离性、持久性。例如…

vuInhub靶场实战系列--Kioptrix Level #2

免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关。 目录 免责声明前言一、环境配置1.1 靶场信息1.2 靶场配置 二、信息收集2.1 主机发现2.1.1 netdiscover2.1.2 nmap主机扫描2.1.3 arp-scan主机扫描 2.2 端口扫描…

LangChain基础知识入门

LangChain的介绍和入门 1 什么是LangChain LangChain由 Harrison Chase 创建于2022年10月,它是围绕LLMs(大语言模型)建立的一个框架,LLMs使用机器学习算法和海量数据来分析和理解自然语言,GPT3.5、GPT4是LLMs最先进的代…

打字侠是一款PWA网站,如何下载到电脑桌面?

嘿,亲爱的键盘侠们! 你是否还在为寻找一款好用的打字练习工具而烦恼?别担心,今天我要给大家介绍一位超级英雄——打字侠!它不仅是一个超级酷的打字练习网站,还是一款PWA(渐进式网页应用&#x…

汇编:结构体

在32位汇编中,结构体(structures)用于组织和管理复杂的数据类型,结构体可以包含多个不同类型的数据项(成员);在MASM(Microsoft Macro Assembler)中,使用结构体…

stm32编写Modbus步骤

1. modbus协议简介: modbus协议基于rs485总线,采取一主多从的形式,主设备轮询各从设备信息,从设备不主动上报。 日常使用都是RTU模式,协议帧格式如下所示: 地址 功能码 寄存器地址 读取寄存器…

电子设计入门教程硬件篇之集成电路IC(二)

前言:本文为手把手教学的电子设计入门教程硬件类的博客,该博客侧重针对电子设计中的硬件电路进行介绍。本篇博客将根据电子设计实战中的情况去详细讲解集成电路IC,这些集成电路IC包括:逻辑门芯片、运算放大器与电子零件。电子设计…

汇编语言LDS指令

在8086架构的实模式下,LDS指令(Load Pointer Using DS)用于从内存中加载一个32位的指针到指定寄存器和DS寄存器。我们来详细解释一下这条指令为什么会修改DS段寄存器。 LDS指令的功能 LDS指令格式如下: LDS destination, sourc…