[Git] Git零基础?带你快速入门,示例练习上手

news2024/11/18 19:51:50

😚一个不甘平凡的普通人,致力于为Golang社区和算法学习做出贡献,期待您的关注和认可,陪您一起学习打卡!!!😘😘😘
🤗专栏:算法学习
🤗专栏:Go实战
💬个人主页:个人主页

在这里插入图片描述

参考学习资料:黑马程序员Git教程

文章目录

  • 版本控制器方式说明
  • Git安装和配置
    • 安装
    • 配置
  • Git工作流程图
    • 名词解释
    • 常用命令
    • Git实例练习
  • Git分支
    • 分支练习
    • 解决冲突
  • Git远程仓库
    • 添加远程仓库
    • 克隆仓库,抓取和拉取
    • 解决合并冲突

版本控制器方式说明

SVN 和 Git
SVN:集中式版本控制,版本库是放在中央服务器中,从中央服务器进行相关代码下载,必须联网才行,个人修改后提交到中央服务器
GIt:分布式版本控制,不需要中心服务器,有一个共享版本库,同时每一个开发人员自己的电脑也是一个完整的版本库
Git特点:速度,简单的设计,允许千万个并行开发的分支,完全分布式,高效管理类似Linux内核一样的超大规模项目

Git安装和配置

安装

git官方下载地址:链接 无脑安装即可
安装成功后:当我们在桌面或者文件夹点击鼠标右键的时候,出现
在这里插入图片描述
Git GUI : GIt提供图形界面工具
Git Bash: Git提供命令行工具

配置

打开Git Bash,首先是需要配置相关用户名和用户的邮箱(这两个是必须要配置的),如下图所示,输入下图命令进行查看是否配置成功:
在这里插入图片描述

配置命令:没有太严格,简单点输入也行
git config --global user.name “xxx”
git config --global user.password “xxx”

有时候常用的指令参数很多,我们可以通过使用别名,使用自定义命令:
注:为什么用到这一个步骤呢?因为后续我们会用到git log查看历史命令,原命令会输出非常多的信息,看起来很冗余,所以我们通过自定义命令,将命令简化为git-log,方便我们查看历史信息,看起来更可观一些

  1. 进入到自己的电脑用户目录,创建 .bashrc 文件,可以通过在该目录下打开git bash:
    输入命令,即表示在该目录下创建bashrc文件

touch ~/.bashrc
在这里插入图片描述

  1. 进入bashrc文件,进行编译,输入:
    在这里插入图片描述

#用于输出git提交日志 相当于进行优化操作了,输出的时候会比较简洁
alias git-log=‘git log --pretty=oneline --all --graph --abbrev-commit’
#用于输出当前目录所有文件及基本信息
alias ll=‘ls -al’

  1. 解决中文乱码问题:
    首先打开Git bash 输入命令:
    在这里插入图片描述
    然后进入到你的git存放地址:你的存放地址/etc/bash.bashrc 文件最后两行添加命令;

#解决中文乱码
export LANG=“zh_CN.UTF-8”
export LC_ALL=“zh_CN.UTF-8”

Git工作流程图

在这里插入图片描述

名词解释

.git : 版本库 当我们使用git管理文件时,把这个文件称为版本库,另一个作用是 它在创建的时候,会自动创建master分支,并将head指针指向master分支
工作区: 本地项目存放的位置
暂存区: 暂时存放文件的地方,通过add命令将工作区的文件添加到缓冲区
本地仓库: 使用commit命令将暂存区文件添加到本地仓库,head指针指向的就是master分支
远程仓库: 使用github托管我们的项目,它就是一个远程仓库,通过使用clone命令将远程仓库代码拷贝下来,本地代码更新后,通过push拖送给远程仓库。

常用命令

git add . // 将该目录下除了.git文件的其他所有文件 从工作区添加到暂存区
git status //查看文件的状态
git commit -m “xxx” //将暂存区文件添加到本地仓库,并且备好注释
git log //查看历史
git-log //因为我们上面在配置的时候自定义了命令,所有会有这个git-log,输出更简短的历史信息,方便我们去查看
git reset --hard commitID //回溯版本号,commitID 版本号 可以通过git log查看
git reflog //可以查看到已经删除的记录

Git实例练习

如下图所示,创建一个文件夹,进行练习,可以跟着图片中的代码进行相关练习
第一步:创建一个文件夹,并且在内部创建一个txt文本提交到本地仓库
在这里插入图片描述
第二步:我们可以通过git-log 查看历史记录
在这里插入图片描述
第三步:对文本进行修改,再次进行提交到本地仓库在这里插入图片描述
第四步:查看历史版本,并且回到修改前的状态
在这里插入图片描述
第五步:git add . 表示添加该目录下的所有文件,当我们不想添加所有文件的时候我们可以进行设置,这个时候可以看到,状态下没有显示two.a文件,我们把.gitignore文件删除可以对比一下
在这里插入图片描述
第六步:删除.gitignore 形成对比查看,可以形成鲜明的对比
在这里插入图片描述
重要:第七步:也就是.gitignore文件失效或者没起对应的作用。需要注意的一点:当你的two.a文件已经提交了,你再创建.gitignore文件,去添加的时候,查看git status时会发现two.a文件仍然存在在暂存区内,这时候我们需要去先清理对应文件的缓存,使用git rm -r --cached two.a 去放弃对应文件的追踪,再次添加的时候,可以实现对我们想要忽略文件的忽略

Git分支

分支:可以把工作从开发主线上分离开来进行重大的bug修改,开发新功能,以免影响开发主线
同时git也提供了一个HEAD指针,表示当前在哪一个分支上,从而避免了错乱
相关命令:

git branch //查看分支
git branch xxx //创建分支
git checkout -b xxx //切换分支 不存在的话就创建
git merge xxx //合并分支
git branch -d xxx //删除分支,需要做各种检查
git branch -D xxx // 删除分支,强制删除

分支练习

题目:创建一个名为dev的分支,切换到dev分支,然后在该分支中创建一个文件hello.txt,之后查看git-log会发现dev分支内已经有了,然后添加并且提交到本地仓库;切换回主分支,你们发现主分支内没有hello.txt文件,查看git-log 可以看到所有分支情况,之后使用git合并分支命令,(一般都是把分支合并到主分支上面),查看git-log命令查看分支情况

操作如下:
在这里插入图片描述
在dev分支上查看情况:可以看到head指针指向当前分区,也就是dev分区,可以在文件中看到hello文件的存在
在这里插入图片描述
切换到主分区,会发现没有hello文件,因为我们是在dev分区上创建的hello文件,然后将dev分区合并到主分区
在这里插入图片描述
合并分支,会发现master主分区可以看到hello文件
在这里插入图片描述

解决冲突

就着上面的例子,当分支和主分支同时修改同一个数据时候,再一次合并时候就会发生冲突,此时计算机会把问题抛给我们去解决。具体情况看下面的代码和图片实例:
在master主分支中,修改hello文件中count=1并提交到仓库中
在这里插入图片描述
切换分支,同样修改hello文件中内容count=2提交到仓库中
在这里插入图片描述
切换到主分支并进行合并分支,会发现发生冲突报错,此时hello文件内部会有两个值,需要我们去解决
在这里插入图片描述
我们可以自己选择去留下一个或者重新定值都可以
修改完之后,这个时候,我们需要重新去添加和提交到本地仓库,一定不忘记,然后重新进行合并就可以了
在这里插入图片描述
最终合并完的结果如下图所示:
在这里插入图片描述
注意:如果创建的分支上面有未合并到主分支的信息,使用git branch -d xxx 删除不掉,因为git害怕你是误删除,所以使用git branch -D xxx 强制删除可以去掉
特殊点:快进模式 当分支和主分支同时对一个文件进行修改时,会出现桥状;当只有分支修改了文件,主分支没有进行修改,当向主分支合并时就会出现快进模式,`这一块用图来理解很容易
在这里插入图片描述
合并之后:
在这里插入图片描述

Git远程仓库

配置秘钥:在git bash中进入 这里以链接码云为例子

ssh-keygen -t rsa //之后不断回车就可以 会自己覆盖之前的秘钥,之前秘钥如果绑定有很多东西,可以先复制一份备份
cat ~/.ssh/id_rsa.pub //获取公钥
ssh -T git@gitee.com //验证是否成功 第一次登录的话 输入yes

添加远程仓库

相关命令:

git remote add origin(这个是别名) xxx(你仓库地址) // 本地连接远程仓库
git remote // 查看远程仓库
git push origin master(本地分支):master(远端分支) //将本地仓库推到远程仓库origin分支去,名字一样可以省略
git push --set-upstream origin master //推送到远端的同时并且建立起和远端分支的关联关系
git branch -vv //查看本地分支和远程仓库分支关系

你创建码云之后,复制ssh仓库地址,在本地连上远程仓库
在这里插入图片描述
本地连接远程仓库,如果报错的话,先输入git init 进行初始化

git remote add origin xxx(仓库ssh地址)

在这里插入图片描述
将本地仓库推到远程仓库:
在这里插入图片描述

克隆仓库,抓取和拉取

当仓库文件克隆到本地之后,后续命令操作

git clone xxx地址 命名 (命名可有可无) // 拉取到本地
当本地仓库进行修改时,使用git push 传到远程仓库,本地克隆下来的只需要git poll就可以同步了
git fetch 只抓到本地 git pull [抓取到本地并且合并等同于fetch+merge]

解决合并冲突

当一段时间内,a,b两个用户同时修改了同一个文件的同一个位置,此时合并时就会发生冲突,a,
b同时在本地仓库提交了,a优于b推到了远程仓库,b要推到远程仓库,需要先拉取远程仓库的提交,然后合并后才可以推送到远端分支

本地仓库一个,另外从远程仓库再拉下来一个,他们相同,现在对共同文件hello文件进行修改
在这里插入图片描述此时A优于B提交,B提交出错,所以应该使用git pull先拉下来,合并之后,再进行提交,就可以解决

在这里插入图片描述
B修改完后,进行添加提交推到远程仓库
在这里插入图片描述
最后A在git pull下来,最后实现A与B同步
在这里插入图片描述

在这里插入图片描述
码字不易,感谢您的关注和支持!!!如果感觉对您有所帮助,给个一键三连吧!

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

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

相关文章

STL--list

一、list介绍 列表是序列容器,允许在序列内的任何位置执行恒定时间插入和擦除操作,以及双向迭代 列表容器作为双向链表实现;双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个和后一个元素 它们与forward_list非常…

3.rabbitMQ之发布确认高级和整合springboot(重要)找了很多博客整理出来的

1.极端情况下 rabbitMQ需要重启,导致消息投递失败(生产者发消息全部丢失)(交换机或者队列出问题) 生产者需要把数据放到缓存,用定时任务重新发送 解决方法: 0.必须配置文件写 spring.rabbitmq.publisher-confirm-typecorrelatedspring.rabbitmq.publisher-returnstruecorrelati…

appuploader 入门使用

回想一下我们发布 iOS 应用,不仅步骤繁琐,非常耗时。一旦其中一步失误了,又得重新来。作为一名优秀的工程师不应该让这些重复的工作在浪费我们的人生。在软件工程里面,我们一直都推崇把重复、流程化的工作交给程序完成。这次的文章…

【shell脚本】for循环语句

循环语句与函数 一、循环与遍历1.1循环1.2遍历1.3循环与遍历 二、for循环2.1for循环的基本格式2.2for循环小实验2.3双层for循环实验 三、while循环3.1 while格式 四、跳出循环4.1continue跳出循环实验4.2break跳出循环实验 一、循环与遍历 1.1循环 循环 (Loop) 是计算机编程中…

不会前端,怎么快速打造属于自己的个人博客?

个人博客 简介提前准备 一、初始化vuepress项目二、页面配置首页配置顶部配置顶部导航栏路由配置侧边导航栏配置 三、打包部署四、数据统计插槽自定义插槽配置整体结构页面效果 项目地址 简介 主要教大家如何快速搞一个属于自己的博客网站,特别是一些不怎么会前端的…

【C++】——类与对象(上)

文章目录 1. 前言2. 面向过程和面向对象3. 类的引入4. 类的定义4.1 类的俩种定义方式 5. 类的访问限定符及封装5.1 类的访问限定符5.2 封装 6. 类的作用域7. 类的实例化8. 类对象的存储方式9. this指针9.1 this指针特性 10. 结尾 1. 前言 今天我们来学习C初期最重要的知识点&a…

用于无线传感器网络路由的改进leach协议(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 当前,无线传感器由于技术的发展得到更加广泛的应用,针对无线传感器网络(WSN)的…

linux重装mmsegmentation

前言 换了个电脑,就想着把之前的mmsegmentation-V0.26.0代码放到新环境,结果踩了不少坑~ 过程 官方步骤 0 安装miniconda 1 创建conda 环境 最开始用的是python3.10,后来发现版本太高不是一件好事,所以装的python3.8 2 安装…

FineBI 6.0入门基础(二)

在图形中分析 组件还可以进行复制,如下图 复制后,切换为【自定义图表】 1.将【毛利额】调整为折线(在图形属性里面进行调整) 2.由于【毛利额】和【毛利额环比增长率】数值差距较大,可将指标中的【毛利额环比增长率】调整为右值轴 3.将图例调整显示位置(组件样式-图例…

ZooKeeper 避坑指南: ZooKeeper 3.6.4 版本 BUG 导致的数据不一致问题

作者:子葵 背景 ZooKeeper 作为分布式系统的元数据中心,对外服务的数据一致性需要得到很好的保证,但是一些老版本的 ZooKeeper 在一些情况下可能无法保证数据的一致性,导致依赖 ZooKeeper 的系统出现异常。 某用户使用 3.4.6 版…

回归问题(AI笔记)

人工智能 回归问题 1943 年,心理学家沃伦麦卡洛克 (Warren McCulloch)和数理逻辑学家沃尔特皮茨(Walter Pitts)通过对生物神经元的研究, 提出了模拟生物神经元机制的人工神经网络的数学模型 ,这一成果被美国神经学家弗 兰克罗森布拉特(Frank …

(别再手动点APP了)UiAutomator2自动化测试框架带你玩转APP操作

目录 前言 一、uiautomator/uiautomator2的前生今世 1.官方文档介绍 2.梳理一下脉络 3.三款框架对比 二、uiautomator2简介 1.项目组成 2.工作原理 三、环境搭建 1.安装uiautomator2 2.初始化设备 3.init时都干了啥? 四、基础操作 1.连接设备 2.命令…

手把手教你搭建 Webpack 5 + React 项目

前言 在平时工作中,为减少开发成本,一般都会使用脚手架来进行开发,比如 create-react-app。脚手架都会帮我们配置好了 webpack,但如果想自己搭建 webpack 项目要怎么做呢?这边文章将介绍如何使用 webpack 5 来搭建 re…

HNU-操作系统OS-实验Lab2

OS_Lab2_Experimental report 湖南大学信息科学与工程学院 计科 210X wolf (学号 202108010XXX) 前言 实验一过后大家做出来了一个可以启动的系统,实验二主要涉及操作系统的物理内存管理。操作系统为了使用内存,还需高效地管理…

C++全栈知识体系 2.0

C 全栈知识体系 一个记录C知识的学习网站! 包含内容: C(基础、函数、知识点、IO框架、新特性), 算法, 数据库(MySQL、ElasticSearch、Redis), 编程四大件, 架构, 微服务, 中间件(ZeroMQ、Dubbo、Consul、Logstash、Kong), 工具, 部署(Docker、k8s、Istio), 项目(开源…

YOLOv7环境配置的一些细节

评论区和私信问我问题的同学们不要急&#xff0c;你们的问题我一直在研究&#xff0c;只是还没成功(>﹏<)&#xff0c;如果完成了我会第一时间发出来并通知你的(≧∇≦)/ 本文将讲解YOLOv7环境配置的一些细节&#xff08;YOLOv5环境配置也适用&#xff0c;之前在配gpu版本…

【移动端网页布局】流式布局案例 ⑦ ( 水平排列的图片链接 2 | 浮动设置 | 盒子模型类型设置 | 结构伪类选择器 )

文章目录 一、水平排列的图片链接样式及核心要点1、实现效果2、HTML 结构3、CSS 样式 二、完整代码示例1、HTML 标签结构2、CSS 样式3、展示效果 一、水平排列的图片链接样式及核心要点 1、实现效果 实现如下样式 , 水平排列的图片链接 , 第一个图片占宽度的 50% , 第二第三个 …

【视频解读】Window上安装和使用autogluon V0.7

1.使用conda安装的python环境 教程使用的是极简版miniconda,由于我们的电脑中安装了anaconda&#xff0c;所以不需要进行进一步安装。python版本为3.9&#xff0c;博客里面有anaconda和python版本的对应关系。注意查看版本autogluon V0.4需要3.8或者3.9和3.10&#xff0c;pip版…

分类预测 | MATLAB实现基于PSO-NN、SVM、KNN、DT的多特征数据分类预测,二分类及多分类

分类预测 | MATLAB实现基于PSO-NN、SVM、KNN、DT的多特征数据分类预测&#xff0c;二分类及多分类 目录 分类预测 | MATLAB实现基于PSO-NN、SVM、KNN、DT的多特征数据分类预测&#xff0c;二分类及多分类分类效果基本描述程序设计参考资料 分类效果 基本描述 Matlab实现基于PSO…

智能家居项目

文章目录 一、功能描述二、整体框架结构及编译2.1、整体框架2.2、编译Makefile 三、工厂模式四、守护进程udev五、监控视频储存六、遇到的问题和未解决的问题七、代码流程图7.1、树莓派&#xff08;8线程 &#xff0c;2进程&#xff09;7.2、手机APP 八、内网穿透&#xff08;实…