Git 初学

目录

一、需求的产生

二、版本控制系统理解

1. 认识版本控制系统

2. 版本控制系统分类

(1)集中式版本控制系统

缺点:

(2)分布式版本控制系统

三、初识 git

四、git 的使用

    例:将 “ OLED文件夹 ” 添加到笔者的 gitee仓库中。

基本命令整理:

五、分支操作


一、需求的产生

        在软件开发过程中,每实现一个功能,每前进一步,都要赶紧存档备份,保存为一个版本,然后以这个版本为基点进行下一个版本的开发。客户不停地提需求,改需求,你就不停地备份版本。这就像写毕业论文一样,你不停地改论文,导师不停地打回来,到最后就变成了这个样子。

        不同版本的论文之间 到底修改了哪些东西 ?时间久了,可能也就 慢慢忘记了。有没有更好的方法去 记录这些详细的变化呢 ?         答案是有的。我们可以 使用 版本控制 系统记录每一次的 修改和变化

二、版本控制系统理解

1. 认识版本控制系统

        版本控制系统会跟踪并记录一个项目中每一个文件的变化:谁创建了它,谁修改了它,又是谁删除了它,是什么时候,修改了什么内容,都一一记录在案。有了版本控制系统,工程师之间互相推卸责任的机会大大减少了,你修改了什么,都有详细的记录在案,都保存在版本库中,铁证如山,随便翻一翻就可以查得到。

2. 版本控制系统分类

        版本控制系统一般分为:集中式版本控制系统和分布式版本控制系统

(1)集中式版本控制系统

软件的各个版本快照只保存在服务器上,服务器中包含各个版本的软件代码。用户如果想要观看某个版本的代码, 首先要从版本库中将该版本的代码拉取到本地的计算机上,然后才能查看和修改,最后将自己的修改保存到服务器上。

缺点:

    ① 数据存储在 服务器上,使用时要 联网:员工直接登录服务器 删库 跑路,如果数据没有备份,问题就很严重,基本上就 很难恢复了。

    ② 收费:远远 没有免费的分布式版本控制 系统受 欢迎。

(2)分布式版本控制系统

        不再将整个版本库保存在一个服务器上,而是保存在每个员工的计算机中

好处:

        即使服务器 崩溃了,或者离职的员工删除了服务器的代码,只要 数据在任何一个员工的计算机中有 备份,都可以 直接恢复,因为 每个计算机保存的版本库数据 都是一样的

        集中式 和 分布式版本 控制系统 典型的代表就是 小乌龟和 Git

三、初识 git

        学习git,首先要明白几个重要的基本概念工作区(Working Directory)、暂存区(Staging Area) 和版本库(Repository)。

        版本库 里保存的是我们提交的 多个版本的代码快照,如果想查看某个版本的代码,可以通过 git checkout命令将版本库里这个 版本的代码拉取出来,释放到 工作区

        在工作区,可以浏览某一个版本的代码、修改代码。如果想 把自己修改保存到版本库中,可以先将修改保存到 暂存区,接着修改,再保存到暂存区,直到 真正完成修改,再统一将暂存区里所有的修改提交到 版本库中。

        为什么还需要一个暂存区呢?将工作区的修改直接提交(Commit),保存到版本库中岂不是更方便?

   答:

        对于一个版本库来说,你的 任何一个提交,包括修改、添加文件、删除文件等 操作都会有一个记录,而在 实际工作中,对于一个 工程师来说,在 开发一个功能时,可能会分成很多步,如果每一小步都去 提交一次,意义不是很大,而且 不是一个 完整的功能,别人可能就 搞不懂你的提交到底实现了 什么功能。所以将每次 很小的修改都做一次提交,就不是很合适。

        从原则上讲,我们的 每一次提交,都是一个 里程碑:要么新增了一个功能,要么修改了一个 Bug,要么优化了一个功能。在实际开发中的 每一小步,都可以 先保存到暂存区,等整体功能 完成后,再统一 提交比较合理。

四、git 的使用

    例:将“OLED文件夹”添加到笔者的gitee仓库中。

1. 在此文件路径下打开命令。

2. git init :在此路径下初始化Git仓库

        如果初始化成功,将会生成 .git 目录。这个 .git 目录 里存储着 管理当前目录内容所需的仓库数据。在 Git中,这个目录的内容被称为 “ 附属于该仓库的工作树 ” 。文件的编辑 等操作在工作树中进行,然后 记录到仓库中,以 此管理文件的历史快照。

        如果想将文件恢复到原先的状态,可以从仓库中调取之前的快照,在工作树中打开。开发者可以通过这种方式获取以往的文件。

补:此时 git status 命令查看 “ OLED文件 ” 时显示在 Untracked files 里。

3. git add OLED :将工作区的修改“OLED文件夹”添加到暂存区(提交之前的一个临时区域,即Stage 或 Index)

补:

(1)git status 命令 的显示结果发生了变化。“ OLED文件 ” 显示在 Changes to be committed 中了。 

(2)git rm --cached OLED:将 “ OLED文件夹 ” 从暂存区中 删除

4. git commit -m “<日志信息(自写)>” OLED:将暂存区的修改提交到本地仓库,即保存仓库历史记录。(通过这些记录就可以在工作树中复原文件

补:

(1)git status查看文件的状态。每一步操作后,OLED 的文件状态都会发生变化 :从untracked 到 changes to be commited ,工作区的状态 也会跟着变化。

(2)git log查看提交信息。包括提交的 ID、提交作者、提交时间、提交信息说明 等。( 后加上目录名,便会 只显示该目录下的 日志。如果 加的是 文件名,就会 只显示与 该文件相关的日志 )

5. 如果想把修改再次提交到本地仓库,可以使用下面的命令。

(1)git add OLED

(2)git commit -m “<日志信息(自写)>” OLED

    git show查看新的提交信息和修改变化

6. git remote add origin 远程仓库地址:建立本地仓库与远程仓库的关联。

    git remote rm origin:删除关联的origin的远程库。

    git pull --rebase origin master:将远程仓库的内容合并到本地仓库。

7. git push -u origin master:将本地仓库的文件推送到已经建立关联的远程仓库master分支中。

基本命令整理:

五、分支操作

        在进行多个并行作业时,会用到分支,每个分支中都拥有自己的最新代码。master分支是 Git 默认创建的分支,因此基本上所有开发都是以这个分支为中心进行的。不同分支中,可以同时进行完全不同的作业。等该分支的作业完成之后再与 master分支合并。

        如果想让自己提交不影响整个项目,不影响其他人使用,则可以创建一个自己的分支my_branch,切换到 my_brancn分支 上,然后在这个分支上 修改代码 就可以了。提交时 再将自己修改用上面的方法 提交到 my_branch分支 上。通过这种操作,所有修改 都提交到你 自己创建的分支 my_branch 上,而不会影响 master主分支上 的代码,不会影响其他人。

(1)git branch my_ branch :创建一个新分支 my_branch。

(2)git checkout my_ branch :切换到新分支my_branch。

(3)git commit -m "on my _brach:modify OLED”:将修改提交到 my_branch。

(4)git log:查看新的提交信息。

(5)git checkout master:切换到 master 分支,在该分支上看不到新的提交信息

(6)git merge my_branch:将 my_branch 分支上的修改合并到 master 分支

(7)git log:查看提交信息。


                                                        后续学习再行更新。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nuxt3+Vue3(Composition API)+TS+Vite+Ant Design Vue 搭建

最近官网搭建选择了nuxtjs&#xff0c;由于框架更新了&#xff0c;其中语法也有很多变化&#xff0c;中间遇到了一些问题点做下总结。 nuxt3官方文档地址&#xff1a;https://nuxt.com/docs/getting-started/installation 安装 在安装Nuxt3之前&#xff0c;你需要保证你的nod…

如何使用iptables或者firewalld配置Linux系统的防火墙策略

在网络安全中&#xff0c;防火墙是一种关键的安全设备&#xff0c;用于保护计算机网络免受恶意攻击和未经授权的访问。在Linux系统中&#xff0c;我们可以使用iptables或者firewalld来配置防火墙策略。本文将介绍如何使用这两种工具来配置Linux系统的防火墙策略&#xff0c;包括…

java8-重构、测试、调试

8.1.1 改善代码的可读性 改善代码的可读性到底意味着什么?我们很难定义什么是好的可读性&#xff0c;因为这可能非常主观。通常的理解是&#xff0c;“别人理解这段代码的难易程度”。改善可读性意味着你要确保你的代码能非常容易地被包括自己在内的所有人理解和维护。为了确保…

php基础学习之函数

基本概念 是一种语法结构&#xff0c;将实现某一个功能的代码块封装到一个结构中&#xff0c;从而实现代码的重复利用 php函数的定义语法 &#xff08;与C/Java很类似&#xff0c;区别在于没有数据类型&#xff0c;因为php是弱类型语言&#xff09; function 函数名(参数){ //…

问题:内存时序参数 CASLatency 是() #学习方法#微信#微信

问题&#xff1a;内存时序参数 CASLatency 是&#xff08;&#xff09; A&#xff0e;行地址控制器延迟时间 B&#xff0e;列地址至行地址延迟时间 C&#xff0e;列地址控制器预充电时间 D&#xff0e;列动态时间 参考答案如图所示

HTML-多媒体嵌入-MDN文档学习笔记

HTML-多媒体与嵌入 查看更多学习笔记&#xff1a;GitHub&#xff1a;LoveEmiliaForever MDN中文官网 HTML-中的图片 将图片放入网页 可以使用<img/>来将图片嵌入网页&#xff0c;它是一个空元素&#xff0c;最少只需src属性即可工作 <img src"图片链接"…

图像卷积、步长、填充、特征图、多通道卷积、权重共享、感受野、池化

图像卷积、步长、填充、特征图、多通道卷积、权重共享、感受野、池化 卷积神经网络的一些基本概念&#xff1a;图像卷积、步长、填充、特征图、多通道卷积、权重共享、感受野、池化 1.图像卷积、步长、填充 图像卷积&#xff1a;卷积核矩阵在一个原始图像矩阵上 “从上往下、…

CF1845 D. Rating System [思维题+数形结合]

传送门:CF [前题提要]:自己在做这道题的时候思路完全想错方向,导致怎么做都做不出来,看了题解之后感觉数形结合的思考方式挺好的(或者这种做法挺典的),故写篇题解记录一下 题目很简单,不再解释.先不考虑 k k k,想想是一种什么情况?很显然应该是跟下图一样是一个折线图的变化.…

ubuntu 22.04.3 live serveran图文安装

ubuntu 22.04.3 live server图文安装 一、在Vmware里安装ubuntu 22.04.3 live server操作系统 选择第一个选项开始安装 选择English语言 选择中间选项不更新安装&#xff0c;这是因为后续通过更换源之后再更新会比较快 键盘设计继续选择英文&#xff0c;可以通过语言选择…

TenorFlow多层感知机识别手写体

文章目录 数据准备建立模型建立输入层 x建立隐藏层h1建立隐藏层h2建立输出层 定义训练方式建立训练数据label真实值 placeholder定义loss function选择optimizer 定义评估模型的准确率计算每一项数据是否正确预测将计算预测正确结果&#xff0c;加总平均 开始训练画出误差执行结…

Spring Boot 笔记 012 创建接口_添加文章分类

1.1.1 实体类添加校验 package com.geji.pojo;import jakarta.validation.constraints.NotEmpty; import lombok.Data;import java.time.LocalDateTime;Data public class Category {private Integer id;//主键IDNotEmptyprivate String categoryName;//分类名称NotEmptypriva…

【MySQL】多表关系的基本学习

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-3oES1ZdkKIklfKzq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

【Linux】Framebuffer 应用

# 前置知识 LCD 操作原理 在 Linux 系统中通过 Framebuffer 驱动程序来控制 LCD。 Frame 是帧的意思&#xff0c; buffer 是缓冲的意思&#xff0c;这意味着 Framebuffer 就是一块内存&#xff0c;里面保存着一帧图像。 Framebuffer 中保存着一帧图像的每一个像素颜色值&…

17.3.1.3 灰度

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 灰度的算法主要有以下三种&#xff1a; 1、最大值法: 原图像&#xff1a;颜色值color&#xff08;R&#xff0c;G&#xff0c;B&a…

【python】网络爬虫与信息提取--requests库

导学 当一个软件想获得数据&#xff0c;那么我们只有把网站当成api就可以 requests库:自动爬取HTML页面&#xff0c;自动网络请求提交 robots协议&#xff1a;网络爬虫排除标准&#xff08;网络爬虫的规则&#xff09; beautiful soup库&#xff1a;解析HTML页面 工具&…

nginx2

mkdir /usr/local/develop cd /usr/local/develop 下载 wget http://nginx.org/download/nginx-1.17.4.tar.gz yum install git git clone https://github.com/arut/nginx-rtmp-module.git 解压文件 tar zxmf nginx-1.17.4.tar.gz 进入解压目录 cd nginx-1.17.4/ 安装编译…

《Go 简易速速上手小册》第9章:数据库交互(2024 最新版)

文章目录 9.1 连接数据库 - Go 语言的海底宝藏之门9.1.1 基础知识讲解安装数据库驱动数据库连接 9.1.2 重点案例&#xff1a;用户信息管理系统准备数据库Go 代码实现连接数据库添加新用户查询用户信息用户登录验证主函数 9.1.3 拓展案例 1&#xff1a;批量添加用户准备数据库Go…

【刷题】牛客— NC21 链表内指定区间反转

链表内指定区间反转 题目描述思路一&#xff08;暴力破解版&#xff09;思路二&#xff08;技巧反转版&#xff09;思路三&#xff08;递归魔法版&#xff09;Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读&#xff01;&#xff01;&#xff01;下一篇文章见&…

IIC--集成电路总线

目录 一、IIC基础知识 1、设计IIC电路的原因&#xff1a; 2、上拉电阻阻值怎么确定 3、IIC分类 4、IIC协议 二、单片机使用IIC读写数据 1、 IIC发送一个字节数据&#xff1a; 2、IIC读取一个字节数据&#xff1a; 一、IIC基础知识 1、设计IIC电路的原因&#xff1a; (…

【机器学习案例5】语言建模 - 最常见的预训练任务一览表

自监督学习 (SSL) 是基于 Transformer 的预训练语言模型的支柱,该范例涉及解决有助于建模自然语言的预训练任务 (PT)。本文将所有流行的预训练任务放在一起,以便我们一目了然地评估它们。 SSL 中的损失函数 这里的损失函数只是模型训练的各个预训练任务损失的加权和。 以BE…