git的简单介绍和使用

news2024/11/15 15:51:33

git学习

      • 1. 概念
        • git和svn的区别和优势
        • 1.1 区别
        • 1.2 git优势
      • 2. git的三个状态和三个阶段
        • 2.1 三个状态:
        • 2.2 三个阶段:
      • 3. 常用的git命令
        • 3.1 下面是最常用的命令
        • 3.2 git命令操作流程图如下:
      • 4. 分支内容学习
        • 4.1 项目远程仓库
        • 4.2 项目本地仓库
        • 4.3 生产环境从远程master分支拉取打包,暂不设置“integration manager”角色,每位开发人员均可以向master分支合并。
      • 5. 具体开发步骤
      • 6. 如何解决冲突
      • 7. 减少冲突的方法
      • 8. 关于对冲突和合并的理解
      • 9. 补充其他可能用的命令
        • 9.1 对象库操作相关命令
        • 9.2 数据传输相关命令
        • 9.3 分支相关命令
          • 9.3.1 git branch 分支管理
          • 9.3.2 git checkout 切换或新建分支
          • 9.3.3 git merge 分支合并

1. 概念

Git是一个免费和开源的分布式版本控制系统。相较于SVN具有便于本地分支等特性。

git和svn的区别和优势

1.1 区别

  • SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。

  • Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

1.2 git优势

  1. 容易分支;git鼓励创建一个或多个本地分支进行开发且代价极小。与此对应SVN的分支基本上等于将整个项目进行拷贝,成本大。
  2. 速度快;大部分操作都在本地进行,如查看提交记录。但是在拉取的时候会慢,SVN拉取的是最新版本,而GIT会拉取整套版本;
  3. 分布式;与SVN集中式管理相比,GIT每个用户都是主服务的一个完整备份;
  4. 有暂存区;可用于提交部分文件;
  5. 数据安全;每个文件与每次提交都会被验证

2. git的三个状态和三个阶段

  • 三个状态:已修改,已暂存,已提交
  • 三个阶段:工作区,暂存区,仓库

三个状态分别对应三个阶段

2.1 三个状态:

  • 已修改(modified):表示修改了文件,但还没保存到仓库中。

  • 已暂存(staged):已暂存,表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

  • 已提交(committed):表示数据已经安全地保存在本地仓库中。

2.2 三个阶段:

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库
  • 工作区(Working Directory):对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。

  • 暂存区(Staging Area):保存了下次将要提交的文件列表信息,一般在 Git 仓库目录中。 按照 Git 的术语叫做“索引”,不过一般说法还是叫“暂存区”。

  • 仓库(Repository): Git用来保存项目的元数据和对象数据库的地方,分为本地仓库与远程仓库。

3. 常用的git命令

3.1 下面是最常用的命令

序号命令名称描述
1git clone克隆复制远程仓库包含历史版本在内的几乎所有数据至本地仓库。
2 ❤git pull拉取将远程仓库的最新内容数据下载到你的本地仓库并尝试合并
3 ❤git fetch获取将远程仓库的最新内容数据下载到你的本地仓库但不会自动合并
4git checkout检出多用途命令,从Git仓库提取文件、撤销修改、切换分支等。
5git diff比较未暂存文件与最后一次提交的文件或者已暂存文件差异。
6 ❤git add跟踪跟踪新文件并使之处于暂存状态或合并时将冲突文件标识为已解决等。
7 ❤git commit提交将未暂存的或已暂存的文件保存至本地仓库
8 ❤git push推送将文件推送到远程仓库。
9git log查看提交历史。
10❤git branch分支创建或查看分支。
11❤git merge合并合并分支。

3.2 git命令操作流程图如下:

在这里插入图片描述

4. 分支内容学习

4.1 项目远程仓库

共分为两个分支。

  • master分支:主干分支。用于发布生产环境。

  • dev分支:开发分支。(一般我们都是从dev拉取版本)接收本地dev分支的合并。测试无误后才合并至master分支,后续根据情况决定是否建立测试分支。

4.2 项目本地仓库

  • 包括一个dev分支与多个功能及bug修复分支。

  • dev分支用来合并其它功能分支的提交,同时用来推送远程dev分支。

  • 功能分支及bug修复分支是临时分支,用于开发具体功能和修复bug,开发完成合并至本地dev分支后可删除;

    注意线上的bug修改分支需要从远程master分支进行拉取。

4.3 生产环境从远程master分支拉取打包,暂不设置“integration manager”角色,每位开发人员均可以向master分支合并。

5. 具体开发步骤

  1. 拉取远程最新提交的dev分支至本地dev分支,保证本地dev分支代码为最新版本。

  2. 从本地dev分支拉取新的功能分支dev-temp-xxx并在其上进行开发

    就是新建一个dev-temp-xxx分支

  3. 本地功能开发分支在开发完成并且自测无误后进行代码提交commit(commit是提交到本地仓库)。

    ps:只是提交到本地仓库,并不是合并merge;

    每个temp分支和dev都有指针指向自己的版本,在没有合并之前是不会产生新的版本的;

  4. 切换到本地dev分支从远程dev分支拉取最新提交。

    保证本地dev最新;因为在我们第一次拉取远程dev进行功能开发期间,可能其他人已经push了一个版本修改了相同的功能,这个时候我们就得重新拉取远程dev到本地dev,以便于解决 / 避免冲突

  5. 将功能分支dev-temp-xxx合并(merge)到本地dev分支,此过程可能产生冲突,解决冲突。

    再本地dev重新拉取以后,我们在把temp分支合并到本地

  6. 推送本地dev分支到远程dev分支。

  7. 将新建的功能分支dev-temp-xxx删除。

个人 具体理解如下:

6. 如何解决冲突

  1. 冲突发生时首先备份自己开发的内容。

  2. 然后用他人的版本解决冲突。

    舍弃自己的版本,直接用他人的版本作为merge的父类;

  3. 将自己新开发的内容回添到已解决冲突的文件中。

    不是简单的复制粘贴上去

  4. 提交。

7. 减少冲突的方法

  • 任务分解时功能独立;

  • 开发前拉取代码;(尽量早拉取)

  • 开发测试完成后及时提交代码。(尽快早提交)

8. 关于对冲突和合并的理解

  • 冲突的解决,分支的合并都是在本地的;
  • 本地的dev分支版本,都是高于拉取时远程dev的版本,所以在本地合并(merge)之前得重新拉去最新的远程dev分支

9. 补充其他可能用的命令

命令简要说明
git add添加至暂存区
git add–interactive交互式添加
git apply应用补丁
git am应用邮件格式补丁
git annotate同义词,等同于 git blame
git archive文件归档打包
git bisect二分查找
git blame文件逐行追溯
git branch 分支相关分支管理
git cat-file版本库对象研究工具
git checkout 分支相关检出到工作区、切换或创建分支
git cherry-pick提交拣选
git citool图形化提交,相当于 git gui 命令
git clean清除工作区未跟踪文件
git clone克隆版本库
git commit提交
git config查询和修改配置
git describe通过里程碑直观地显示提交ID
git diff差异比较
git difftool调用图形化差异比较工具
git fetch获取远程版本库的提交
git format-patch创建邮件格式的补丁文件。参见 git am 命令
git grep文件内容搜索定位工具
git gui基于Tcl/Tk的图形化工具,侧重提交等操作
git help帮助
git init版本库初始化
git init-db*同义词,等同于 git init
git log显示提交日志
git merge 分支相关分支合并
git mergetool图形化冲突解决
git mv重命名
git pull拉回远程版本库的提交
git push推送至远程版本库
git rebase分支变基
git rebase–interactive交互式分支变基
git reflog分支等引用变更记录管理
git remote远程版本库管理
git repo-config*同义词,等同于 git config
git reset重置改变分支“游标”指向
git rev-parse将各种引用表示法转换为哈希值等
git revert反转提交
git rm删除文件
git show显示各种类型的对象
git stage*同义词,等同于 git add
git stash保存和恢复进度
git status显示工作区文件状态
git tag里程碑管理

9.1 对象库操作相关命令

命令简要说明
git commit-tree从树对象创建提交
git hash-object从标准输入或文件计算哈希值或创建对象
git ls-files显示工作区和暂存区文件
git ls-tree显示树对象包含的文件
git mktag读取标准输入创建一个里程碑对象
git mktree读取标准输入创建一个树对象
git read-tree读取树对象到暂存区
git update-index工作区内容注册到暂存区及暂存区管理
git unpack-file创建临时文件包含指定 blob 的内容
git write-tree从暂存区创建一个树对象

9.2 数据传输相关命令

命令简要说明
git fetch-pack执行 git fetch 或 git pull 命令时在本地执行此命令,用于从其他版本库获取缺失的对象
git receive-pack执行 git push 命令时在远程执行的命令,用于接受推送的数据
git send-pack执行 git push 命令时在本地执行的命令,用于向其他版本库推送数据
git upload-archive执行 git archive –remote 命令基于远程版本库创建归档时,远程版本库执行此命令传送归档
git upload-pack执行 git fetch 或 git pull 命令时在远程执行此命令,将对象打包、上传

9.3 分支相关命令

9.3.1 git branch 分支管理

git branch 查看本地所有分支

git branch -a 查看所有的分支

git branch -r 查看远程所有分支

9.3.2 git checkout 切换或新建分支

git checkout --track origin/dev 切换到远程dev分支

git checkout dev 切换到本地dev分支

git checkout -b dev 建立一个新的本地分支dev

9.3.3 git merge 分支合并

git merge origin/dev 将分支dev与当前分支进行合并

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

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

相关文章

通过anvt X6和vue3实现图编辑

通过anvt X6 X6地址&#xff1a;https://x6.antv.antgroup.com/tutorial/about&#xff1b; 由于节点比较复杂&#xff0c;使用vue实现的节点&#xff1b; x6提供了一个独立的包 antv/x6-vue-shape 来使用 Vue 组件渲染节点。 VUE3的案例&#xff1a; <template><div…

WebRTC | 信令服务器

目录 一、相关术语 1.NAT 2.STUN服务器 3. TURN服务器 4.打洞 二、WebRTC一对一架构 三、信令 1. 信令传输协议的选择 2. 信令服务器的实现方案 3. 信令服务器的业务逻辑 信令服务器的作用主要有两个&#xff1a;一是实现业务层的管理&#xff0c;如用户创建房间&…

【软件工程】数据流图/DFD概念符号/流程图分层/数据字典

【软件工程】数据流图/DFD概念符号/流程图分层/数据字典 目录 【软件工程】数据流图/DFD概念符号/流程图分层/数据字典 一、数据流图 ( DFD ) 简介 二、数据流图 ( DFD ) 概念符号 1、数据流 2、加工 ( 核心 ) 3、数据存储 4、外部实体 三、数据流图 ( DFD ) 分层 1、…

扫雷(超详解+全部码源)

C语言经典游戏扫雷 前言一.游戏规则二.所需文件三.创建菜单四.游戏核心内容实现1.创建棋盘2.打印棋盘3.布置雷4.排查雷5.game()函数具体实现 五.游戏运行实操六.全部码源 前言 &#x1f600;C语言实现扫雷是对基础代码能力的考察。通过本篇文章你将学会如何制作出扫雷&#xff…

一般透视投影VS正交投影VS弱透视投影

一般透视投影&#xff1a; 正交投影 (Orthographic Projection) 正交投影 (Orthographic Projection) 是一种将三维物体沿着垂直于成像平面的方向投影到成像平面上的方法&#xff0c;它保持了三维空间中的平行关系和角度&#xff0c;但是失去了深度信息和透视效果。正交投影可…

软件测试计划模板的编写

1 概述 在整个系统测试阶段,相关的系统测试工作的开展需要进行各方面的明确,在系统测试计划中主要是针对系统测试阶段各个不同岗位所担负的相关职责,防范由于职责不清所造成的系统测试工作的混乱现象.明确定义相关的系统测试范围,防止由于测试分工而造成的遗测.在该计划中一定…

gitee linux免密/SSH 方式连接免登录

目录 生成SSH公钥通过 ssh-keygen 程序创建找到SSH公钥 在gitee中添加公钥 生成SSH公钥 通过 ssh-keygen 程序创建 shell> ssh-keygen -t rsa -C "xxxxxx.com" Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rs…

《网络是怎样连接的》(三)

《网络是怎样连接的》&#xff08;二.2&#xff09;_qq_38480311的博客-CSDN博客 本文主要取材于 《网络是怎样连接的》 第三章。 简述&#xff1a;本文主要内容是解释 通过网线传输出去的包是如何经过集线器、交换机和路由器等网络设备&#xff0c;最终进入互联网的。 信号…

AI量化模型预测挑战赛 第二次学习笔记

有关竞赛信息以及基础baseline代码解读请看我的上一篇文章 AI量化模型预测——baseline学习笔记_寂ღ᭄秋࿐的博客-CSDN博客 在经过baseline进行详细的分析之后&#xff0c;接下来的方向肯定是奔着提分去的&#xff0c;下面我就从五个方面进行一一列出提分思路 提取更多的特征…

BC260模块_NB通讯_MQTT

闲来无事从角落里找出了一个BC260模块&#xff0c;玩了玩发现挺有趣的&#xff0c;于是将调试过程记录下来分享给需要的朋友们。 1.BC260模块 BC260模块是一款NB-loT无线通讯模块&#xff0c;模块插上物联网SIM卡后可以实现物联网无线通讯功能。 BC260模块是一款NB-loT无线通…

android 开发中常用命令

1.反编译 命令&#xff1a;apktool d <test.apk> -o <folderdir> 其中&#xff1a;test.apk是待反编译文件的路径&#xff0c;folderdir是反编译后的文件的存储位置。 apktool d -f <test.apk> -o <folderdir> 注意&#xff1a;如果dir已经存在&am…

2023年测试岗,软件测试面试题汇总-附答案,疯狂拿offer...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 介绍一下测试流程…

共享式以太网的争用期

在以太网中&#xff0c;必然会发生碰撞。   站点从发送帧开始&#xff0c;最多经过 2 τ 2\tau 2τ就会检测到碰撞&#xff0c;此时 2 τ 2\tau 2τ被称为争用期或碰撞窗口。   站点从发送帧开始&#xff0c;经过争用期 2 τ 2\tau 2τ这段时间还没有检测到碰撞&#xff0c…

不只是Axure,这5 个也能轻松画原型图!

在设计和开发过程中&#xff0c;原型图是一个至关重要的工具。它是将设计理念转化为可视化、交互式的形式&#xff0c;使团队成员和利益相关者更好地理解和评估产品的功能和用户体验。选择适合的软件工具对于画原型图至关重要&#xff0c;本文将介绍 5 种常用的画原型图软件&am…

创建Springboot+vue3项目

项目概述创建springboot项目加入mybatis-plus支持1.加入依赖代码2.创建数据库实例3.yml文件的配置4.编写测试代码5.测试结果 创建vue项目报错错误一错误二错误三 项目概述 后端&#xff1a;Springboot、mybatis-plus、java 前端&#xff1a;nodejs、vue脚手架、element-ui 数据…

互联网医院|线上医疗平台连接医者和患者的桥梁

近年来&#xff0c;随着互联网技术的飞速发展&#xff0c;互联网医院系统悄然崛起&#xff0c;引领着医疗行业的变革浪潮。这一系统以其出色的功能与服务&#xff0c;为广大患者带来了便捷、高效的医疗体验&#xff0c;将传统医疗模式推向了新的高度。 作为医疗界的新生力量&a…

计算机网络—IP

这里写目录标题 IP的基本认识网络层与数据链路层有什么关系IP地址基础知识IP 地址的分类什么是A、B、C类地址广播地址用来做什么什么是D、E类广播多播地址用于什么IP分类的优点IP分类的缺点 无分类地址CIDR如何划分网络号和主机号怎么进性子网划分 公有 IP 地址与私有 IP 地址公…

sentinel客户端和dashboard交互

回顾 在前面的章节中&#xff1a;通过阐述sentinel简单使用、滑动窗口、核心流程源码分析把sentinel限流、熔断等主要功能说明清楚了&#xff0c;但我们在实际使用的过程中&#xff0c;不可能通过硬编码的方式设置规则&#xff0c;且规则也没法直观的维护&#xff0c;为此肯定…

如何在 Cloudron 上部署 ONLYOFFICE 文档

使用 Cloudron 应用市场上的应用程序&#xff0c;只需点击几下即可在服务器上部署 ONLYOFFICE 文档。 什么是 ONLYOFFICE 文档 ONLYOFFICE 文档是一个在线办公套件&#xff0c;包括文本文档、电子表格和演示文稿的查看器和编辑器&#xff0c;与包括 .docx、.xlsx、.pptx 在内的…

八、复用(1)

本章概要 组合语法继承语法 初始化基类带参数的构造函数 委托 代码复用是面向对象编程&#xff08;OOP&#xff09;最具魅力的原因之一。 对于像 C 语言等面向过程语言来说&#xff0c;“复用”通常指的就是“复制代码”。任何语言都可通过简单复制来达到代码复用的目的&#…