Git相关使用

news2024/11/24 14:38:22

私人博客

许小墨のBlog —— 菜鸡博客直通车

系列文章完整版,配图更多,CSDN博文图片需要手动上传,因此文章配图较少,看不懂的可以去菜鸡博客参考一下配图!

系列文章目录

前端系列文章——传送门
后端系列文章——传送门


文章目录

  • 私人博客
  • 系列文章目录
  • Git
    • 一、git介绍
      • 1、概念介绍
      • 2、学前了解
        • 2.1、文件夹和仓库
        • 2.2、仓库状态
          • 2.2.1、工作区
          • 2.2.2、暂存区
          • 2.2.3、版本区
        • 2.3、仓库类型
          • 2.3.1、远程仓库
          • 2.3.2、本地仓库
        • 2.4、专业术语
      • 3、工具安装
    • 二、远程仓库
      • 1、新建仓库
      • 2、未初始化
      • 3、有版本记录
      • 4、冲突和解决
      • 5、秘钥的配置
    • 三、分支操作
    • 四、其他命令


Git

一、git介绍

1、概念介绍

git是一个项目管理工具。

在工作中,一个项目会分给多人合作,每个人负责一个模块,所有人做完后,将项目代码放在一起组成完成的项目。

在以前, 这项工作需要人工处理,工作量大,出错率高。

现在,这项工作都交给git(项目管理工具)自动处理,工作量忽略不计,出错率低。

主管每天查看项目小组的工作量,以前需要拿到代码文件,跟上一天做对比,现在,通过git工具快速得到统计,可以更公平的论功行赏。

项目开发过程中,如果改动较大,完全瘫痪,正常文件夹中的操作,就需要从头来过了,但是用git来管理项目文件,可以快速回退到某个节点。

工作中的项目都是放在一个代码仓库中的,每个人负责将代码仓库中的代码下载到本地进行开发,每天开发完,都要上传到代码仓库,组长进行项目合并。这个上传和下载的过程,都是通过git工具进行的。

代码仓库相当于一个专门用于存储代码的远程服务器。

利用一个软件 - git工具,对本地或远程的项目文件进行方便的管理。

2、学前了解

2.1、文件夹和仓库

仓库是被git工具管理的文件夹。

仓库中有.git隐藏文件夹。

仓库可以跟远程服务器建立连接。

2.2、仓库状态

2.2.1、工作区

还未放入仓库中的文件,属于文件夹,但不属于仓库。准备存入仓库的文件。

2.2.2、暂存区

进入仓库的文件,但是还未指定版本记录,没有历史操作记录,准备登记记录。

2.2.3、版本区

进入仓库的文件,已经有登记,可以随时根据记录找到对应的文件。

任何内容要真正存入仓库,需要先在 工作区==>暂存区==>版本区

2.3、仓库类型

2.3.1、远程仓库
  • github

    官网:https://github.com/

    属于微软,国际程序员都在使用,有较为先进的开源项目,有个人项目,有社区项目,很多名人都在使用这种仓库记录代码。

    企业版要收费,因为需要占用别人的空间,自己搭建服务。

  • gitee

    码云,官网:https://gitee.com/

    服务器在国内,中国版的github,国内很多开源项目都在上面。

    企业版不收费,但空间和服务完全是网站提供的,可能会有不安全的感受。

  • gitlab

    官网:https://git.lug.ustc.edu.cn

    由乌克兰程序员开发。

    企业版不收费,但服务需要自己搭建。现在很多企业都在使用。

2.3.2、本地仓库

本地被git工具管理的文件夹。

2.4、专业术语

本地仓库:在自己电脑上被 git 管理的文件夹

远程仓库:在线上管理的文件夹

推送:将本地的内容,上传到远程

同步/拉取:将线上的内容和本地内容保持一致

git可以管理远程的仓库,也可以管理本地仓库。

3、工具安装

傻瓜式安装即可。

下载安装,检测是否安装成功:

git --version

或者点击鼠标右键出现下图也可以

在这里插入图片描述

二、远程仓库

1、新建仓库

gitee新建仓库,有手就行,不会的去菜鸡博客看图吧!

选择初始化仓库后的仓库展示

未选择初始化仓库的展示

2、未初始化

在本地新建文件夹,然后初始化为仓库

git init

本地添加内容,查看仓库状态

git status

红色代表在工作区;绿色代表在暂存区

将工作区文件放在暂存区:

git add .

将暂存区文件放在版本区:

git commit -m "版本记录"

建立和远程仓库的联系:

git remote add origin 远程仓库地址

将本地仓库版本区文件推送到远程仓库:

git push -u origin master

这里的origin跟上一个命令中的origin同名,origin是一个变量名,可以自定义。

要将本地仓库推送到未初始化的远程仓库,本地仓库必须至少有一个版本。

后续再次将本地仓库推送到远程,只需要执行git push就行。

3、有版本记录

将远程仓库文件克隆到本地:

git clone 远程仓库地址 指定的文件夹名称

文件夹名称可以省略,默认使用远程仓库名称

本地操作正常的工作区、暂存区、版本区操作,后推送到远程仓库:

git push

远程仓库有变化,需要本地跟远程保持同样的变化:

git pull

4、冲突和解决

远程仓库要形成版本,必须一个一个生成,不能跳着生成,例如:版本1只能生成版本2,不能生成版本。

当两个人操作同一个仓库的时候容易造成跨版本生成的冲突。

解决办法:

  1. 先让本地仓库和远程仓库保持同步

    git pull
    
  2. 再次推送

    git push
    

5、秘钥的配置

远程仓库操作有两种协议:https和ssh方式。

https方式推送需要输入账号和密码,传输安全性不如shh高。

ssh协议的使用,需要配置公钥和秘钥,可以节省输入账号密码的操作,保证传输的安全。

检测本地计算机是否有秘钥

cd ~/.ssh

有这个文件夹,表示存在,否则不存在[

秘钥生成:

ssh-keygen -t rsa -C "提交使用的邮箱"

公钥配置:

将带有.pub的文件内容复制到SSH公钥。

然后我们在使用仓库地址的时候,就可以使用ssh的地址了:

推送/拉取都不需要输入账号密码了,且只有当前计算机可以使用,其他计算机无法使用。

三、分支操作

一个大项目,会分很多人开发,每个人一个功能,这时候,每个功能作为一个分支,主分支只有目录结构。当所有人将自己负责的功能开发完成的时候,再将所有分支合并到主分支上,形成一个完整的项目。

每次初始化一个git的时候,默认创建一个主要分支:master

查看所有分支:

git branch

创建分支:

git branch 分支名

切换分支:

git checkout 分支名

创建并切换到这个分支:

git checkout -b 新分支名

合并分支:(将别的分支合并到自己分支)

git merge 要合并的分支

删除分支:(不能自己删自己)

git branch -D 要删除的分支

在实际工作的项目中,master分支用于正在运行的完整的项目。我们通常在开发的时候,不会直接操作master分支的,master分支上的代码是从主测试分支上合并过来的。主测试分支上的代码,是从主开发分支上合并过来的,主开发分支上的代码,是从分开发分支上合并过来的,我们在工作中,通常是在分开发分支上进行操作的。

我们本地和远程进行非主分支操作的时候,本地的分支名和远程的分支名一定要保持一致。

四、其他命令

设置提交的用户名和邮箱:

git config --global user.name "自定义的名字"
git config --global user.email "自定义的邮箱地址"

将源文件添加到暂存区:

git add 文件 # 将单独一个文件添加到暂存区
git add 文件夹/ # 将整个文件夹添加到暂存区(git不管理空文件夹)
git add --all # 将当前文件夹中所有文件和文件夹都添加到暂存区  -  简写:git add .

将暂存区的文件拉回到源文件:

git reset HEAD -- 文件 # 将某个文件从暂存区变为源文件
git reset HEAD -- 文件夹/ # 将整个文件夹从暂存区变为源文件
git reset HEAD -- . # 将所有文件从暂存区变为源文件

我们每次提交就相当于在整个开发中,记录了一些节点 - 版本

查看版本信息:

git log

回到指定版本:

git reset --hard HEAD^ # 有几个上档键就回退几个版本
git reset --hard 历史版本号

让git能管理一个空文件夹:

在空文件夹中新建文件:.gitkeep,这个文件没有实际意义,这是为了占位,让空文件夹能被管理的标识,以后要在文件夹中写文件的时候,这个文件可以被删除

让某些文件或者文件夹被忽略管理:

在和.git同级的位置,新建文件:.gitignore,在这个文件中书写要忽略的内容:

直接写文件名,代表要忽略的是哪个文件
写文件夹路径,表示要忽略的是哪个文件夹
*.后缀,表示要忽略的是所有后缀为指定后缀的文件

本博文缺失大量图片,严重影响内容完整性以及阅读体验,完整内容请前往本人菜鸡博客——许小墨のBlog

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

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

相关文章

APP UI自动化测试思路总结 ,教你彻底学会APP自动化测试

目录 一,开发语言选择 二,UI测试框架选择 1,Appium 2,Airtest 3,选择框架 三,单元测试框架选择 四,测试环境搭建 1,测试电脑选择 2,测试手机选择 3,…

【Redis】Redis管道

面试题 如何优化频繁命令往返造成的性能瓶颈? Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤: 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果),并监听Socket返回&#xf…

基于matlab仿真相控天线阵列在波束成形MIMO-OFDM系统中的使用

一、前言 本例显示了相控阵在采用波束成形的MIMO-OFDM通信系统中的使用。它使用通信工具箱和相控阵系统工具箱中的组件,对组成发射器和前端接收器组件的辐射元件进行建模,用于MIMO-OFDM通信系统。使用用户指定的参数,您可以根据不同空间位置和…

Django自动化测试平台搭建落地全过程(附视频教程+源码)

目录 前言 一、平台基础架构设计 二、自动化测试工具选择与集成 三、平台功能开发 四、总结 前言 自动化测试在现代软件开发中扮演着至关重要的角色,它可以显著提高测试效率和准确性,并帮助开发团队更快地发布高质量的软件产品。Django作为一种流行…

Hudi数据湖技术之集成Spark

目录 1 环境准备1.1 安装MySQL 5.7.311.2 安装Hive 2.11.3 安装Zookeeper 3.4.61.4 安装Kafka 2.4.1 2 滴滴运营分析2.1 需求说明2.2 环境准备2.2.1 工具类SparkUtils2.2.2 日期转换星期 2.3 数据ETL保存2.3.1 开发步骤2.3.2 加载CSV数据2.3.3 数据ETL转换2.3.4 保存数据至Hudi…

Flink的DataStreamApi

1.源算子 SourceFunction 并行度只能为1 ParallelSourceFunction 并行度 2.转换算子 (1)基本类型 所有 Java 基本类型及其包装类,再加上 Void、String、Date、BigDecimal 和 BigInteger。 (2)数组类型 包括基…

【算法】【算法杂谈】判断点是否在三角形内部(面积法和向量法)

目录 前言问题介绍解决方案代码编写java语言版本c语言版本c语言版本 思考感悟写在最后 前言 当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批评指正~ 在此感谢左大神让我对算法有了新的感悟认识! 问题介…

netcore工程在linux下调用linux动态库

文章的内容可能看着枯燥,排版也存在一些问题,但是如果你遇到相关问题,真的无法解决的时候,不妨沉下心来好好阅读一下这篇文章,你会有所收获,也可以先跳到文章最后,看看是不是对你的问题有价值。…

Day955.到底是重构,还是重写? -遗留系统现代化实战

到底是重构,还是重写? Hi,我是阿昌,今天学习记录的是关于到底是重构,还是重写?的内容。 到底是重构,还是重写?这是一个困扰着很多团队的问题。 重构吧,遗留系统积重难…

神经网络模型入门及蠓虫分类问题简单实战

学习知识要实时简单回顾,我把学习的神经网络模型简单梳理一下,方便入门与复习。 神经网络模型 神经网络简介 人工神经网络是在现代神经科学的基础上提出和发展起来的,旨在反映人脑结构及功能的一种抽象数学模型。自 1943 年美国心理学家W.M…

【分段DP】ABC275 F

一万年没写DP了 这么简单的DP我居然没写出来 F - Erase Subarrays (atcoder.jp) 题意: 思路: 原本的思路是这样的: 看到3000的数据范围就是n^2的DP了 看到删子串,那么留下来的就是子序列,要使得剩下来的子序列的…

剑指Offer--05替换空格58左旋字符串

文章目录 一、剑指Offer--05.替换空格二、剑指Offer--58.左旋字符串 一、剑指Offer–05.替换空格 题目是这样的 意思是将字符串s中的空格替换为字符串"%20",如果只是替换一个字符还好,可以在原数组直接替换,但是是将空格替换为字符串&#xf…

Vue+Echarts 项目演练(下)收尾工作图表绘制

设置销售总量图表 中心容器地图设置 产品库存统计图 产品类别图表 项目可视化完结-整体展示 设置销售总量图表 在第一个容器中进行图表设置 <template><div><h2>A</h2><div class"chart" id"oneChart">容纳后期的图表…

shell编程规范与变量

shell脚本编程规范 shell脚本概述 将要执行的命令按顺序保存到一个文本文件给该文件可执行权限可结合各种Shell控制语句以完成更复杂的操作 Shell脚本应用场景 重复性操作交互性任务批量事务处理服务运行状态监控定时任务执行 什么是Shell 就是与内核沟通的界面、应用程序等…

[JAVA数据结构]顺序表ArrayList

目录 1.线性表 2.顺序表 3.ArrayList简介 4.ArrayList的使用 4.1ArrayList的构造方法 4.2ArrayList的常用操作 4.3ArrayList的遍历方法 4.4ArrayList的扩容机制 5.ArrayList的具体运用 ArrayList是一种基于数组的数据结构&#xff0c;是线性表的一种&#xff0c;也是…

[NLP]如何训练自己的大型语言模型

简介 大型语言模型&#xff0c;如OpenAI的GPT-4或谷歌的PaLM&#xff0c;已经在人工智能领域掀起了一场风暴。然而&#xff0c;大多数公司目前没有能力训练这些模型&#xff0c;而且完全依赖少数几家大型科技公司作为技术提供者。 在Replit&#xff0c;我们已经大量投资于所需…

linux-01-基础回顾-虚拟机安装linux(centos7)、linux常用命令

文章目录 Linux-Day01课程内容1. 前言1.1 什么是Linux1.2 为什么要学Linux1.3 学完Linux能干什么 2. Linux简介2.1 主流操作系统2.2 Linux发展历史2.3 Linux系统版本 3. Linux安装3.1 安装方式介绍3.2 安装VMware3.3 安装Linux3.4 网卡设置3.5 安装SSH连接工具3.5.1 SSH连接工具…

Neural ODE 神经常微分方程

Neural ODE ODE常微分方程 欧拉法求解&#xff1a;欧拉法求解过程是一个递归的过程&#xff0c;这个思想和牛顿法、梯度下降法是相似的。并且它将函数离散化&#xff0c;分割成一个个小段来求解。欧拉法求解的常微分方程的形式通常为 图片来自知乎Neural ODE&#xff0c;这个…

EventBus源码解析

文章目录 前言一、EventBus使用二、EventBus事件流程分析1.注册订阅者2.发布事件Event3.接收事件Event4.取消注册订阅者 三、发送粘性事件问答EventBus 以及它的优点EventBus原理 EventBus中设计模式为什么要使用 EventBus 来替代广播呢&#xff1f;说下 5 种线程模式的区别Eve…

进程、进程组、会话期

进程 在内核中&#xff0c;每个进程都使用一个不同的大于零的正整数来标识&#xff0c;称为进程号pid&#xff08;process ID&#xff09;。 进程组 一个进程可以通过 fork() 调用创建一个或多个子进程&#xff0c;这些进程就可以构成一个进程组。例如&#xff0c; liyongj…