Git【入门】从安装到会用(千字总结)

news2024/11/19 22:41:10

Git使用

一、Git介绍

1.1 版本控制(理解)

无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改的情况

但我们不能只保留最后一次修改的文件,其余版本也要保留,有可能老板想要的就是你的上一个版本的

1.2 开发中存在的问题(理解)

  • 程序员小明负责的模块就要完成了,就在即将提交发布之前的一瞬间,电脑突然蓝屏,硬盘光荣下岗!

几个月来的努力付之东流

代码备份不仅要备份到本地,还需要备份到云端

要是电脑坏了,那所以的代码全都白写了

  • 老王需要在项目中加入一个很复杂的功能,一边尝试,一边修改代码,就这样摸索了一个星期。 可是这被改得面目全非的代码已经回不到从前了。

版本控制很重要!

  • 小明和老王先后从文件服务器上下载了同一个文件

协同工作也很重要!

  • 因项目中Bug过多,导致项目进度拖延,项目经理老徐因此被骂,但不清楚Bug是手下哪一个程序员写的

责任追溯很重要!

1.3 SVN版本控制(理解)

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑, 所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。

  • 服务器单点故障

    将会导致所有人员无法工作

  • 而服务器硬盘损坏

    这意味着,你可能失去了该项目的所有历史记录,这是毁灭性的。

1.4 Git与SVN对比

Git是在2005年,Linux系统的创建者Linus Torvalds,为了帮助全球的开发者,维护Linux系统内核的开发 而开发了自己的开源分布式版本控制工具,分为两种类型的仓库:本地仓库和远程仓库。

  • 每一个客户端都保存了完整的历史记录

    服务器的故障,都可以通过客户端的记录得以恢复。

二、Git下载和安装

2.1 Git的下载

官网下载地址:Git - Downloads

2.2 Git的安装

  1. 双击安装包,进入安装向导界面

  2. 指定安装目录

  1. 一路next下一步,等待安装

  1. 安装完成

Git Bash:Git提供的命令行工具

Git GUI: Git提供的图形界面工具

Git CMD 就像带有 git 命令的常规 Windows 命令提示符。 它允许您通过命令行使用所有 Git 功能。

  1. 运行Git命令客户端,使用git --version 命令,可以查看git版本

2.3 TortoiseGit的安装

TortoiseGit:图形化工具

搜索TortoiseGit进官网下载

再下载一个对应的:TortoiseGit-LanguagePack

  1. 双击安装包,进入安装向导界面

  2. 一路next下一步

  3. 指定安装目录

  4. 安装

  5. 配置

  6. 安装TortoiseGit中文语言包,一路next即可

  1. 配置TortoiseGit中文语言

显示为中文就表示设置好啦

三、Git操作入门

3.1 Git 基本工作流程(理解)

本地仓库

先在工作目录(Working Tree)中写代码,然后再通过git命令把代码添加到暂存区(index)中,最后把写好的代码提交到本地历史仓库中

3.2 Git 常用命令

命令作用
git init初始化,创建 git 仓库
git status查看 git 状态 (文件是否进行了添加、提交操作)
git add 文件名添加,将指定文件添加到暂存区
git commit -m '提交信息'提交,将暂存区文件提交到历史仓库
git log查看日志( git 提交的历史日志)

3.3 Git 基本工作流程

步骤:

  1. 创建工作目录、初始化本地 git 仓库

  2. 新建一个 test. txt 文件(暂不执行添加操作)

  3. 使用 status 命令,查看状态

  4. 使用 add 命令添加,并查看状态

  5. 使用 commit 命令,提交到本地历史仓库

  6. 使用 log 命令,查看日志

  7. 修改 test. txt 文件

  8. 添加并提交,查看日志

commit 会把暂存区中所有的文件全部添加到本地仓库中

操作步骤

  1. 创建工作目录、初始化本地 git 仓库

  2. 新建一个 test.txt 文件(暂不执行添加操作)

  3. 使用 status 命令,查看状态

  4. 使用 add 命令添加,并查看状态

  5. 使用 commit 命令,提交到本地历史仓库

  6. 使用 log 命令,查看日志

  7. 修改 test.txt 文件

  8. 添加并提交,查看日志

3.4 Git使用图形化工具来操作(理解)

  1. 创建工作目录、初始化本地 git 仓库

  2. 新建一个 test.txt 文件(暂不执行添加操作)

  3. 选中文件右键,选择TortoiseGit,之后选择添加

  4. 空白处右键,Git提交,提交到本地历史仓库

  5. 空白处右键,TortoiseGit,显示日志,可以产看日志信息

  6. 修改 test.txt 文件

  7. 添加并提交,查看日志

四、Git版本管理

4.1 历史版本切换(理解)

  • 准备动作

    1. 查看 my_project 的 log 日志 git reflog :可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录的操作)

    2. 增加一次新的修改记录

  • 需求: 将代码切换到第二次修改的版本

    指令:git reset --hard 版本唯一索引值

4.2 分支管理介绍(理解)

分支在干活时并行工作,互不打扰,最终能合并到一起

  • 分支

    • 由每次提交的代码,串成的一条时间线

    • 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线

  • 分支的使用场景

    1. 周期较长的模块开发 假设你准备开发一个新功能,但是需要一个月才能完成 第一周写了20%的代码,突然发现原来已经写好的功能出现了一个严重的Bug 那现在就需要放下手中的新功能,去修复Bug 但这20%的代码不能舍弃,并且也担心丢失,这就需要开启一个新的版本控制。

    2. 尝试性的模块开发 业务人员给我们提出了一个需求,经过我们的思考和分析 该需求应该可以使用技术手段进行实现。 但是我们还不敢确定,我们就可以去创建一个分支基于分支进行尝试性开发。

  • 分支工作流程

    • Master: 指向提交的代码版本

    • Header: 指向当前所使用的的分支

主分支:Master

当你提交了第一个代码版本,那Master指向的就是第一个版本,提交第二个代码版本,Master指向的就是第二个版本,以此类推

假设Dev这个分支的功能我们实现完了,怎么把这个分支合并到主分支上?

  1. 把Dev提交一次

  2. 再让Master这个指针,指向到Dev当前的时间版本

  3. 然后让header指针指向回Master这个主分支

即可完成合并

如图:

如果你觉得Dev这个分支现在没必要留下来,那么你可以直接把它删了

  1. 创建新分支

  2. 切换分支

  3. 合并分支

  4. 删除分支

4.3 分支管理操作

  • 创建和切换

    创建分支命令:git branch 分支名 切换分支命令:git checkout 分支名

  • 新分支添加文件

    查看当前分支文件命令:ls

  • 合并分支

    合并分支命令:git merge 分支名

  • 删除分支

    删除分支命令:git branch -d 分支名

  • 查看分支列表

    查看分支命令:git branch

总结:不同分支之间的关系是平行的关系,不会相互影响

git 本地仓库

五、远程仓库

5.1 远程仓库的工作流程(理解)

push(推送):将本地仓库的内容传送到远程仓库中

pull(拉取):将远程仓库中更新了的内容复制到本地仓库中(更克隆有区别,不是全部复制,只复制了更新的内容)

clone(克隆):将远程仓库中的所有内容复制一份到本地仓库中

5.2 常见的远程仓库托管平台

  • GitHub

    域名:https://github.com 介绍:GitHub是全球最大的开源项目托管平台,俗称大型程序员社区化交友网站

    各类好玩有趣的开源项目,只有想不到,没有找不到。

  • 码云

    域名:https://gitee.com 介绍:码云是全国最大的开源项目托管平台,良心平台,速度快,提供免费私有库

5.3 创建远程代码仓库

1、先有本地仓库,再建远程仓库

先创建好本地仓库,再创建远程仓库

  • 步骤

    1. 创建本地仓库

    2. 创建或修改文件,添加(add)文件到暂存区,提交(commit)到本地仓库

    3. 创建远程仓库

    4. 推送到远程仓库

注意:推送代码之前,需要先配置 SSH 公钥

生成SSH公钥

生成SSH公钥步骤

  1. 设置Git账户

    • git config user.name(查看git账户)

    • git config user.email(查看git邮箱)

    • git config --global user.name “账户名”(把账户名设置为一种全局的账户名)

    • git config --global user.email “邮箱”(把邮箱设置为全局邮箱)

      注:--global:表示这台机器上所有的Git仓库都会使用这个配置

    • cd ~/.ssh(查看之前是否生成过SSH公钥)

  2. 生成SSH公钥

  • 生成命令: ssh-keygen –t rsa –C “邮箱”( 注意:这里需要敲3次回车)

  • 查看命令: cat ~/.ssh/id_rsa.pub

  • 设置账户公钥

  • 公钥测试

    命令:ssh -T git@gitee.com

    命令:ssh -T git@github.com

  1. 推送到远程仓库

  • 步骤

    1. 为远程仓库的URL(网址),自定义仓库名称

    2. 推送

  • 命令 git remote add 远程仓库名称 远程仓库URL git push -u 仓库名称 分支名

2、先有远程仓库,再建本地仓库

步骤

  1. 将远程仓库的代码,克隆到本地仓库 克隆命令:git clone 仓库地址

  2. 创建新文件,添加并提交到本地仓库

  3. 推送至远程仓库

  4. 项目拉取更新 拉取命令:git pull 远程仓库名 分支名

5.4 代码冲突问题

产生原因:

两个程序员操作同一个文件,其中一个程序员在修改文件后,push到远程仓库,另一个程序员应该先pull将最新的代码更新到本地仓库后,在修改代码,之后push到远程仓库,结果他没有先pull将最新的代码更新到本地仓库,而是直接将自己的代码push到远程仓库

也就是说对于远程仓库来说同一份文件出现不同的代码内容,这样就是代码冲突

如何解决冲突

注:cat 文件:查看文件

<<<<<<<和>>>>>>>中间的内容,就是冲突部分

  1. 修改冲突行,保存,即可解决冲突。

  2. 重新add冲突文件并commit到本地仓库,重新push到远程

六、在IDEA中集成Git

6.1 在IDEA中配置Git

  1. File(文件) -> Settings(设置)

  2. Version Control (版本控制)-> Git -> 指定git.exe文件的存放目录

  3. 点击Test测试

6.2 在IDEA中版本切换

方式一: 控制台Version Control->Log->Reset Current Branch...->Reset

这种切换的特点是会抛弃原来的提交记录

方式二:控制台Version Control->Log->Revert Commit->Merge->处理代码->commit

这种切换的特点是会当成一个新的提交记录,之前的提交记录也都保留

Revert 操作会当成一个新的提交记录 这种回退的好处在于,如果后悔了"回退"这个操作也可以回退到没有回退之前的版本因为历史记录还保留提交记录

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

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

相关文章

基于YOLOv5、YOLOv8的火灾检测(超实用毕业设计项目)

yolo系列文章目录 摘要&#xff1a;基于YOLOV5模型的火灾检测系统用于日常生活中检测与定位火灾目标&#xff0c;包括建筑火灾、森林火灾等。利用深度学习算法可实现图片、视频、摄像头等方式的火灾目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导…

云安全之信息内容安全

内容安全产生背景 随着互联网、智能设备及各种新生业务的飞速发展&#xff0c;互联网上的数据呈现爆炸式增长&#xff0c;图片、视频、发文、聊天等互动内容已经成为人们表达感情、记录事件和日常工作不可或缺的部分。每天&#xff0c;通过互联网上传的视频、图片数量超过10亿…

在工业机器视觉领域中应用钡铼技术有限公司的EtherCAT网关

钡铼技术有限公司作为一家专注于业物联网关、工业智能网关、边缘计算网关、ARM嵌入式工业计算机、PLC远程采集网关、Modbus转MQTT网关、OPC UA网关、BACnet网关路由器、Lora网关、工业4G边缘路由器、4G无线远程数据采集模块、4G DTU RTU、以太网远程IO模块、工业总线分布式I/O模…

R语言实现向量自回归和误差修正模型——附实战代码

大家好&#xff0c;我是带我去滑雪&#xff01; 向量自回归&#xff08;VAR&#xff09;模型和误差修正模型&#xff08;ECM&#xff09;是时间序列分析中常用的两种模型&#xff0c;它们用于研究多个变量之间的动态关系。VAR 模型适用于研究多个相关变量之间的相互影响和动态关…

总结CRM客户管理系统实施失败的主要原因

实施CRM系统相对于ERP等大型软件要更加容易&#xff0c;但不是每一家企业都能成功实施CRM系统&#xff0c;实施CRM销售管理系统失败的原因有很多比如准备工作不足、与现有应用无法集成做到数据互通、销售人员不容易操作系统。 准备工作不足 部署方式是本地化还云服务主要取决…

除了console.log(),很多人不知道的其他方法console.table,console.dir,console.time等

console.dir 可以对象化输出 dom <script>setTimeout(() > {let d document.querySelector(.box);console.log(d);console.dir(d);}, 500);</script>输出结果 这个对象展开之后的内容太多了就不截图了 console.table能够以表格形式展现对象/数组 <scrip…

如何在 PyTorch 中冻结模型权重以进行迁移学习:分步教程

一、说明 迁移学习是一种机器学习技术&#xff0c;其中预先训练的模型适用于新的但类似的问题。迁移学习的关键步骤之一是能够冻结预训练模型的层&#xff0c;以便在训练期间仅更新网络的某些部分。当您想要保留预训练模型已经学习的特征时&#xff0c;冻结至关重要。在本教程中…

回馈式负载箱的应用

回馈式负载箱通过用来模拟负载来测量电源的性能和稳定性&#xff0c;由可编程电子负载、控制电路和测量电路组成&#xff0c;回馈式负载箱的应用非常广泛&#xff0c;它用于电源系统的研发和测试。通过连接回馈式负载箱到待测电源上&#xff0c;可以模拟不同的负载情况&#xf…

LuaRadio介绍

介绍 LuaRadio是一个用于构建信号处理流程图的框架 在软件定义的无线电流图中&#xff0c;源和接收块倾向于实现某种I/O&#xff0c;如从SDR加密狗读取样本&#xff0c;或将样本写入IQ文件&#xff0c;而处理块倾向于计算&#xff0c;如滤波器和乘法器。 数据类型说明 LuaRadio…

ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的问题解决

winR打开窗口输入 services.msc 停止mysql 找到data文件&#xff0c;清空其中全部文件。没有data文件&#xff0c;手动创建 ​ 输入 mysqld --remove mysql 移除服务&#xff1b; 注册服务&#xff0c;mysqld -install&#xff1b; 并开始初始化&#xff0c;mysqld --initi…

【FreeRTOS】【STM32】03 FreeRTOSConfig.h头文件简介与修改

基于[野火]《FreeRTOS%20内核实现与应用开发实战—基于STM32》.pdf FreeRTOSConfig.h头文件是FreeRTOS各项功能的打开与关闭 FreeRTOSConfig.h头文件简介 之前也说过了&#xff0c;FreeRTOSConfig.h文件可以添加在工程中任意文件夹&#xff0c;只需要在路径中添加好了就行。…

修炼k8s+flink+hdfs+dlink(四:k8s概念)

一&#xff1a;概念 1. 概述 1.1 kubernetes对象. k8s对象包含俩个嵌套对象字段。 spec&#xff08;规约&#xff09;&#xff1a;期望状态 status&#xff08;状态&#xff09;&#xff1a;当前状态 当创建对象的时候&#xff0c;会按照spec的状态进行创建&#xff0c;如果…

某省医保局:强化医保信息化高质量建设,提升数字医疗保障服务能力

自2018年起&#xff0c;国家医保信息化工作启动&#xff0c;2020年10月完成了国家医保信息平台主体建设&#xff0c;随后国家医保信息化工作重点转向地方落地应用。在国家医保局的指导下&#xff0c;全国各地省市级医保部门制定了医疗保障信息化工作目标。 东北某省作为医保信息…

java日志框架详解-Log4j2

一、概述 Apache Log4j 2 &#xff08;Log4j – Apache Log4j 2&#xff09;是对Log4j的升级&#xff0c;它比其前身Log4j 1.x提供了重大改进&#xff0c;并参考了Logback中优秀的设计&#xff0c;同时修复了Logback架构中的一些问题。被誉为是目前最优秀的Java日志框架&#x…

【智慧燃气】智慧燃气解决方案总体概述--终端层、网络层

关键词&#xff1a;智慧燃气、智慧燃气系统、智慧燃气平台、智慧燃气解决方案、智慧燃气应用、智能燃气 智慧燃气解决方案是基于物联网、大数据、云计算、移动互联网等先进技术&#xff0c;结合燃气行业特征&#xff0c;通过智能设备全面感知企业生产、环境、状态等信息的全方…

合并单元格,并且动态合并单元格,合并相同值的单元格,vue2项目

element-ui 合并行或列 table :span-method&#xff08;行合并&#xff09;_elementui合并列_Take^that的博客-CSDN博客 <script>export default {data(){return {spanArr:[],pos:null,tableData:[},mounted(){this.getSpanArr(this.tableData)},methods:{objectSpanMeth…

基于若依ruoyi-nbcio支持flowable流程增加自定义业务表单(二)

之前讲了自定义业务表单&#xff0c;现在讲如何与流程进行关联 1、后端部分 WfCustomFormMapper.xml <update id"updateCustom" parameterType"Object">update wf_custom_form set deploy_id #{customFormVo.deployId}, flow_name#{customFormVo.…

MovieLens:一个常用的电影推荐系统领域的数据集

MovieLens是一个常用的电影推荐系统领域的数据集&#xff0c;用于研究和开发推荐算法和机器学习模型。该数据集包含了用户对电影的评分、电影的信息以及用户的信息。以下是MovieLens数据集的完整介绍&#xff1a; MovieLens数据集版本&#xff1a; MovieLens数据集有多个版本…

华为认证 | HCIP-Data Center Network V1.0正式发布!

华为认证数通高级工程师HCIP-Data Center Network V1.0&#xff08;中文版&#xff09;自2023年9月28日起&#xff0c;正式在中国区发布。 01 发布概述 基于“平台生态”战略&#xff0c;围绕“云-管-端”协同的新ICT技术架构&#xff0c;华为公司打造了覆盖ICT领域的认证体系&…

Gossip协议是什么

Gossip协议是什么 Gossip protocol 也叫 Epidemic Protocol (流行病协议), 是基于流行病传播方式的节点或者进程之间信息交换的协议, 也被叫做流言算法, 八卦算法、疫情传播算法等等. 说到 Gossip 协议, 就不得不提著名的六度分隔理论. 简单地说, 你和任何一个陌生人之间所间…