git的简单介绍和使用

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.mzph.cn/news/31510.shtml

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

相关文章

恒盛策略:沪指冲高回落跌0.26%,酿酒、汽车等板块走弱,燃气股拉升

10日早盘,两市股指盘中冲高回落,半日成交约4200亿元,北向资金净卖出超20亿元。 到午间收盘,沪指跌0.26%报3235.9点,深成指跌0.54%,创业板指跌0.28%;两市算计成交4202亿元,北向资金净…

【Terraform学习】保护敏感变量(Terraform配置语言学习)

实验步骤 创建 EC2 IAM 角色 导航到IAM 在左侧菜单中,单击角色 。单击创建角色该按钮以创建新的 IAM 角色。 在创建角色部分,为角色选择可信实体类型: AWS 服务 使用案例:EC2 单击下一步 添加权限:现在,您可以看到…

小白到运维工程师自学之路 第七十一集 (kubernetes网络设置)

一、概述 Master 节点NotReady 的原因就是因为没有使用任何的网络插件,此时Node 和Master的连接还不正常。目前最流行的Kubernetes 网络插件有Flannel、Calico、Canal、Weave 这里选择使用flannel。 二、安装flannel 1、master下载kube-flannel.yml,所…

Chrome有些网站打不开,但是火狐可以打开

Chrome有些网站打不开,但是火狐可以打开 问题描述火狐成功界面谷歌报错界面局域网设置使用代理服务器访问成功 解决方案参考 问题描述 开了一个tizi,Chrome不能使用,火狐可以。之前装过插件Ghelper白嫖科学上网,那次之后好像浏览…

领航优配:沪指震荡涨0.47%,保险、券商板块强势,互联金融概念活跃

4日早盘,两市股指高开高走,沪指一度涨逾1%打破3300点,随后涨幅有所收窄;两市半日成交超6000亿元,北向资金小幅净流入。 截至午间收盘,沪指涨0.47%报3295.91点,深成指涨0.67%,创业板指…

【JAVA基础】- 同步非阻塞模式NIO详解

【JAVA基础】- 同步非阻塞模式NIO详解 文章目录 【JAVA基础】- 同步非阻塞模式NIO详解一、概述二、常用概念三、NIO的实现原理四、NIO代码实现客户端实现服务端实现 五、同步非阻塞NIO总结 一、概述 NIO(Non-Blocking IO)是同步非阻塞方式来处理IO数据。…

数据API服务管理功能 - 提升数据效率的关键工具

数据API服务管理功能 - 提升数据效率的关键工具 什么是数据API服务管理功能? 数据API服务管理功能是一种用于有效管理和控制数据API的工具。它为用户提供了方便的界面和功能,以简化数据访问、解析和处理的过程。通过使用数据API服务管理功能&#xff0…

优思学院|质量第一的目的是什么?

国外有一句很著名的话:Quality comes first, profit is its logical sequence,意思是:质量第一,利润是其合理的结果,这句话也是很多公司或者商店使用的标语。 简而言之,只要你把质量放在第一位&#xff0c…

yolo-nas对自定义数据集进行训练,测试详解 香烟数据集

yolov5格式的香烟数据集 https://download.csdn.net/download/qq_42864343/88110620?spm1001.2014.3001.5503 创建yolo-nas的运行环境 进入Pycharm的terminal,输入如下命令 conda create -n yolonas python3.8pip install super-gradients使用自定义数据训练Yo…

苍穹外卖系统07

哈喽!大家好,我是旷世奇才李先生 文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟,回复【项目】获取我为大家准备的项目 最近打算把我手里之前做的项目分享给大家&#…

AWS——04篇(AWS之Amazon S3(云中可扩展存储)-02——EC2访问S3存储桶)

AWS——04篇(AWS之Amazon S3(云中可扩展存储)-02——EC2访问S3存储桶) 1. 前言2. 创建EC2实例 S3存储桶3. 创建IAM角色4. 修改EC2的IAM 角色5. 连接EC2查看效果5.1 连接EC25.2 简单测试5.2.1 查看桶内存储情况5.2.2 复制本地文件…

如何将苹果彻底删除视频找回?试试这3种方法

如今是短视频时代,大家通常会使用苹果手机来拍摄视频,以此记录生活中的美好日常。但是大家都知道视频是十分占空间的,这也经常会出现iPhone内存不足,磁盘崩溃的问题。 当遇到iPhone内存不足的情况时,大家往往会选择清…

uni-app之app上传pdf类型文件

通过阅读官方文档发现,uni.chooseFile在app端不支持非媒体文件上传; 可以使用这个插件,验证过可以上传pdf;具体使用可以去看文档 插件地址 就是还是会出现相机,这个可能需要自己解决下 实现功能:上传只能上…

刷新缓冲区(标准IO)

标准IO是带缓冲的,输入和输出函数属于行缓冲,stdin、stdin、printf、scanf 1.换行符刷新 2.缓冲区满刷新 3.fflush函数强制刷新 4.程序正常结束

在线Word怎么转换成PDF?Word无法转换成PDF文档原因分析

不同的文件格式使用方法是不一样的,而且也需要使用不同的工具才可以打开编辑内容,针对不同的场合用户们难免会用到各种各样的文件格式,要想在不修改内容的前提下提高工作效率,那就需要用到文件格式转换,那么在线Word怎…

交换机的堆叠技术

目录 一、堆叠的优势 1、提高可靠性 2、简化组网 3、简化管理 4、强大的网络拓展 二、堆叠的方式 1、堆叠卡堆叠 2、业务口堆叠 3、堆叠卡和业务卡堆叠的优缺点 三、堆叠的原理 1、角色 2、单机堆叠 3、堆叠ID 4、堆叠的优先级 5、堆叠的建立过程 1&#xff09…

Windows下安装Sqoop

Windows下安装Sqoop 一、Sqoop简介二、Sqoop安装2.1、Sqoop官网下载2.2、Sqoop网盘下载2.3、Sqoop安装(以version:1.4.7为例)2.3.1、解压安装包到 D:\bigdata\sqoop\1.4.7 目录2.3.2、新增环境变量 SQOOP_HOME2.3.3、环境变量 Path 添加 %SQO…

Nginx负载均衡(重点)

正向代理 部署正向代理 server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; proxy_pass http://20.0.0.60:80…

Apple AudioToolbox 之 音频编解码(AudioConverterRef)

今天记录是的是 使用 AudioToolbox 框架 使用 AudioConverterRef 工具进行本地音频文件的编码和解码。 本文打仓库代码为: JBLocalAudioFileConvecter 分别实现了: flac,mp3等其他音频编码文件 转换成 pcm文件。 (解码)pcm文件 …

macos搭建appium-iOS自动化测试环境

目录 准备工作 安装必需的软件 安装appium 安装XCode 下载WDA工程 配置WDA工程 搭建appiumwda自动化环境 第一步:启动通过xcodebuild命令启动wda服务 分享一下如何在mac电脑上搭建一个完整的appium自动化测试环境 准备工作 前期需要准备的设备和账号&…