Git:从配置到合并冲突

news2024/11/27 22:34:48

目录

        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.coloradmin.cn/o/1805023.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

参考——温湿度传感器DHT11驱动_STM32

设备:stm32f407ZGT6 环境:FreeRTOS HAL 一、简介 到网上找DHT11的驱动,但是都无法使用。原因是RTOS环境中,由于多线程,使用循环计数阻塞式的delay_us延时函数就没那么准,且不同设备中delay_us的计数…

ChatGPT Prompt技术全攻略-精通篇:Prompt工程技术的高级应用

系列篇章💥 No.文章1ChatGPT Prompt技术全攻略-入门篇:AI提示工程基础2ChatGPT Prompt技术全攻略-进阶篇:深入Prompt工程技术3ChatGPT Prompt技术全攻略-高级篇:掌握高级Prompt工程技术4ChatGPT Prompt技术全攻略-应用篇&#xf…

USB (2)

USB transaction 以2.0的枚举过程为例。 首先是TOKEN TRANSACTION,其次是DATA TRANSACTION,再次是Handshake Transaction。 上面的SETUP TRANSACTION是TOKEN TRANSACTION的一种。另外三种是OUT, IN, SOF。 在每个TRANSACTION中又包含了3个STAGE&#x…

层次聚类分析星

clc,clear a [73,40,7;60,15,5;61,19,2;34,18,6;67,126,10;91,40,4;101,40,13;81,40,6;88,40,8;122,40,17;102,50,17;87,50,12;110,50,14;164,50,17;40,30,1;76,40,17;118,50,9;160,50,15];[m,n] size(a);d zeros(m); d mandist(a); % mandist 求矩阵列向量组之间的两两…

pxe批量部署linux介绍

1、PXE批量部署的作用及必要性: 1)智能实现操作系统的批量安装(无人值守安装)2)减少管理员工作,提高工作效率3)可以定制操作系统的安装流程a.标准流程定制(ks.cfg)b.自定义流程定制(ks.cfg(%pos…

linux系统——telnet,ssh命令

telent命令用于登录远程主机,监测远程主机端口是否打开,明文传输,安全性较低,后被弃用,改为ssh

『大模型笔记』Transformer的几种高效自注意力(降低计算复杂度的方法)!

Transformer的几种高效自注意力(降低计算复杂度的方法)! 文章目录 一. 快速回顾一下注意力机制二. 有哪些技术可以用来提高注意力的效率1. Sparse attention(1) 算法原理:Strided Attention & Fixed Attention(2) 复杂度分析: O ( N N p ) \mathscr{O}(N\sqrt[p]{N}) O(…

[学习笔记] VFX Silhouette

Part 1 : The interface of Silhouettte (Silhouette的界面介绍) Part 2: The shape divisions and manual roto(形状分区和手动roto工作): roto过程一般使用 b 曲线roto工作需要逐帧工作按Alt可以修改锚点(拖动)和改变锚点平滑…

基于Gabor小波特征提取和PSO-SVM的胃溃疡分类(MATLAB R2018a)

Gabor滤波器是在测不准原则下能够在时域和频域中唯一能取得最佳的联合分辨率函数(测不准原则:是指在时域与频域中都要获得任何的测量精度那是不可能同时实现的,要使时域分辨率有所提高,必须牺牲频域的分辨率,反之亦然&…

Hugging Face系列2:详细剖析Hugging Face网站资源——实战六类开源库

Hugging Face系列2:详细剖析Hugging Face网站资源——实战六类开源库 前言本篇摘要2. Hugging Face开源库2.1 transformers2.1.1 简介2.1.2 实战1. 文本分类2. 图像识别3. 在Pytorch和TensorFlow中使用pipeline 2.2 diffusers2.2.1 简介2.2.2 实战1. 管线2. 模型和调…

【AI大模型】Prompt Engineering

目录 什么是提示工程(Prompt Engineering) Prompt 调优 Prompt 的典型构成 「定义角色」为什么有效? 防止 Prompt 攻击 攻击方式 1:著名的「奶奶漏洞」 攻击方式 2:Prompt 注入 防范措施 1:Prompt 注…

如何从清空的回收站恢复照片

担心如何从清空的回收站中恢复已删除的照片?您删除的文件和文件夹暂时存储在 Windows 回收站中。它使 Windows 用户能够快速恢复意外或故意丢失的项目。但是,为了释放计算机驱动器上的某些空间,有时可能需要清理回收站。 然而,有…

车用柴油氧化安定性检测 GB 19147-2009全项检测

柴油分为轻柴油(沸点范围约180-370℃)和重柴油(沸点范围约350-410℃)两大类。柴油使用性能中最重要的是着火性和流动性,其技术指标分别为十六烷值和凝点,我国柴油现行规格中要求含硫量控制在0.5%-1.5%。 检…

增值税发票OCR识别功能介绍

OCR增值税发票识别功能介绍如下: 一、技术原理 OCR增值税发票识别系统基于光学字符识别(OCR)技术和人工智能的支持,将传统纸质发票的信息自动转换为计算机可以读取的数字信息。具体技术流程包括: 图像预处理&#x…

SAP ABAP 往数据库表里加数据

目录 方法一:SE16N SE11 方法二:创建维护VIEW:SE11 SM30 Error补充说明: 方法一:SE16N SE11 首先SE16N 进来。 进来之后在テーブル的位置输入表名,然后点击执行(F8) 如果第一次…

【复现】含能量路由器的交直流混合配电网潮流计算

目录 1 主要内容 2 理论及模型 3 程序结果 4 下载链接 1 主要内容 程序复现《含能量路由器的交直流混合配电网潮流计算》,主要是对算例4.1进行建模分析,理论和方法按照文献所述。能量路由器(ER)作为新兴的电力元器件&#xff…

八、【源码】细化XML语句构建器,完善静态SQL解析

源码地址:https://github.com/mybatis/mybatis-3/ 仓库地址:https://gitcode.net/qq_42665745/mybatis/-/tree/08-optimize-xml-parse 细化XML语句构建器,完善静态SQL解析 这一节主要是优化XML解析SQL部分,流程大概为&#xff…

SpringBoot+Vue企业客户管理系统(前后端分离)

技术栈 JavaSpringBootMavenMySQLMyBatisVueShiroElement-UI 角色对应功能 员工管理员 功能截图

饥荒云服务器卡顿情况如何解决

随着网络游戏的普及,云服务器逐渐成为游戏开发者和玩家们的首选。然而,在使用饥荒云服务器时,有时会遇到卡顿的问题,这给玩家带来了困扰。本文将探讨饥荒云服务器卡顿的原因,并提供一些可能的解决方法。 卡顿产生的原因…

Vyper重入漏洞解析

什么是重入攻击 Reentrancy攻击是以太坊智能合约中最具破坏性的攻击之一。当一个函数对另一个不可信合约进行外部调用时,就会发生重入攻击。然后,不可信合约会递归调用原始函数,试图耗尽资金。 当合约在发送资金之前未能更新其状态时&#…