Git相关使用

私人博客

许小墨の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.mfbz.cn/a/14292.html

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

相关文章

数组模拟实现单链表快速操作

前言:我们都知道链表的一般模式是由结构体加指针来实现的,但是在实际的比赛中,结构体指针来实现链表的操作并不常用,原因是因为我们在增加节点时需要开辟新的内存,而比赛时给出的样例大多都是十几万个数据,…

找出1-1000中的所有完美数

再次练习查找完美数,找出 1-1000 中的所有完美数。 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单…… 地址:https://l…

Git的安装和学习使用(一)

本篇文章旨在分享本人在学习Git时的随笔记🤩 文章目录 一、Git 快速入门1.1 Git 概述1.2 SCM概述1.3 Git 安装1.3.1 软件下载1.3.2 软件安装1.3.3 软件测试 二、Git 基础使用2.1 Git 概念2.1.1 版本控制2.1.2 分布式2.1.3 系统2.1.4 区域 2.2 Git 基础指令2.2.1 Lin…

任务调度原理 通俗讲解详细(FreeRTOS)

寄存器说明 以cortex-M3,首先先要了解比较特别的几个寄存器: r15 PC程序计数器(Program Counter),存储下一条要执行的指令的地址。 r14 LR连接寄存器(Link Register ),保存函数返回地址&#x…

Rancher 部署 Elasticsearch 8.5.1 版本服务

前言 从 es7 升级到 es8 之后,启动容器默认启用了 ssl 安全传输配置,但是在 Rancher 中部署的话,需要挂载 pvc 实现 data、logs 等目录持久化,启用 ssl 需要对证书等进行操作,非常麻烦,非常坑。 本文以启…

bitset(位图)的使用与模拟实现

bitset(位图) 位图引入bitset的使用bitset(位图)的模拟实现bitset类各函数接口总览bitset类的实现构造函数set、reset、flip、testsize、countany、none、all打印函数 位图引入 问:给40亿个不重复的无符号整数&#xf…

AlgoC++第三课:C++世界观

目录 C世界观前言1. 程序逻辑2. 内存的逻辑3. 调度的逻辑4. 编译的逻辑5. 作用域的逻辑6. 命名空间的逻辑7. 生命周期的逻辑8. C类的逻辑9. 编译时和运行时的逻辑总结 C世界观 前言 手写AI推出的全新面向AI算法的C课程 Algo C,链接。记录下个人学习笔记&#xff0c…

Vue+Vant封装通用模态框单选框组件

前言 我们知道,在vant组件中提供的组件往往是比较基础的,能够满足基本需求。但是我们想实现ui设计的一些比较丰富效果的组件,需要自己去实现,且当项目中多次用到的时候,我们将以组件化的思想将其封装起来,…

Linux服务器出现503 服务不可用错误怎么办?

​  HTTP 503 服务不可用错误代码表示网站暂时不可用。无论您是网站访问者还是管理员,503 页面都很麻烦。尽管该错误表明存在服务器端问题,但对于访问者和网络管理员来说,有一些可能的解决方案。本文将解释Linux服务器出现503 服务不可用错…

scratch足球射门练习 中国电子学会图形化编程 少儿编程 scratch编程等级考试一级真题和答案解析2023年3月

目录 scratch足球射门练习 一、题目要求 1、准备工作 2、功能实现 二、案例分析

【网络安全】红队基础免杀

引言 本文主要介绍“反射型 dll 注入”及“柔性加载”技术。 反射型 dll 注入 为什么需要反射型 dll 注入 常规的 dll 注入代码如下: int main(int argc, char *argv[]) {HANDLE processHandle;PVOID remoteBuffer;wchar_t dllPath[] TEXT("C:\\experime…

分享几个国内免费的ChatGPT镜像网址(亲测有效-4月25日更新)

最近由于ChatGPT的爆火也让很多小伙伴想去感受一下ChatGPT的魅力,那么今天就分享几个ChatGPT国内的镜像网址,大家可以直接使用!记得点赞收藏一下呦! 1、AQ Bot,网址:点我 https://su.askaiw.com/aq 缺点&…

面试篇:Redis

一、缓存穿透 1、缓存穿透 查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库。即:大量请求根本不存在的key 2、查询流程 3、出现原因 业务层误将缓存和库中的数据删除了,也可能是有人恶…

JUC-多线程(12. AQS-周阳)学习笔记

文章目录 1. 可重入锁1.1. 概述1.2. 可重入锁类型1.3. Synchronized 可重入实现机理 2. LockSupport2.1. LockSupport 是什么2.2. 3种线程等待唤醒的方法2.2.1 Object 的等待与唤醒2.2.2. Condition接口中的等待与唤醒2.2.3. 传统的 synchronized 和 Lock 实现等待唤醒通知的约…

【手把手做ROS2机器人系统开发一】开发环境搭建

【手把手做ROS2机器人系统开发一】开发环境搭建 目录 【手把手做ROS2机器人系统开发一】开发环境搭建 一、专栏介绍: 二、开发环境搭建: 1.Ubuntu系统安装 2.ROS2系统环境安装 3.测试系统运行 一、专栏介绍: 大家好,今天给大家…

栈的基本操作(C语言实现)创建,销毁,入栈,出栈

前言 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的…

同样是测试,朋友到了30k,我才12K,这份测试面试8股文确实牛

程序猿在世人眼里已经成为高薪、为人忠诚的代名词。 然而,小编要说的是,不是所有的程序员工资都是一样的。 世人所不知的是同为程序猿,薪资的差别还是很大的。 众所周知,目前互联网行业是众多行业中薪资待遇最好的,…

Fedora 38 正式发布

Fedora Linux 38 正式发布,用户可以访问官网下载安装最新版本。 新网站 如果你点击了上面的官网链接,你应该会注意到 Fedora 的官网看起来与之前有了很大不同。这是 Fedora Websites & Apps 团队与 Design & Infrastructure 团队以及广大社区合作…

【视频课程】算法工程师需要的ChatGPT大模型算法理论与实践课程!非粗浅科普...

前言 自从2022年11月ChatGPT发布之后,迅速火遍全球。其对话的交互方式,能够回答问题,承认错误,拒绝不适当的请求,高质量的回答,极度贴近人的思维的交流方式,让大家直呼上瘾,更是带火…

安装配置SVN版本控制管理工具

SVN工具能帮我们做什么? 核心功能:文档版本管理系统 适合对象:个人与团队都可以使用,企业中项目资源的重要管理工具 举例:一个文件夹里面的文档管理 1.下载安装SVN服务器 VisualSVN-Server 2.下载安装SVN客户端 T…
最新文章