git 基础

【一】介绍

(1)软件开发模式

  • 瀑布式开发
    • 线性、顺序的开发流程,严格按照需求分析、设计、编码、测试、交付等阶段进行。
    • 每个阶段都必须在前一个阶段完成后才能开始,因此开发周期长,难以应对需求变更。
    • 适用于需求明确、稳定且不易变更的项目。
  • 敏捷开发
    • 强调快速迭代、持续交付和团队协作。
    • 将项目划分为多个小模块或迭代周期,每个迭代周期都包含需求分析、设计、编码、测试等完整流程。
    • 团队成员之间紧密协作,通过定期召开站立会议、评审会议等方式保持信息同步。
    • 灵活应对需求变更,及时调整开发计划。
  • DevOps
    • 强调开发、测试和运维之间的协作与整合。
    • 通过自动化工具和流程,实现软件从开发到部署的全程自动化。
    • 打破开发和运维之间的壁垒,实现持续集成、持续部署和持续监控。
    • 提高软件交付速度和质量,减少故障率和停机时间。

DevOps入门理解(DevOps是什么、瀑布模型、敏捷开发、DevOps、DevOps与虚拟化、容器、微服务)_ cmcc-devops ...

  • 最大区别
    • 瀑布式开发:注重流程和文档,适用于需求明确且不易变更的项目。但开发周期长,难以应对需求变更。
    • 敏捷开发:强调快速迭代和团队协作,能够灵活应对需求变更。适用于需求频繁变更的项目。
    • DevOps:注重开发、测试和运维之间的协作与整合,通过自动化工具和流程提高软件交付速度和质量。适用于需要快速响应市场变化的项目。

(2)git介绍

  • 基本用途

    • 代码共享:Git 允许开发者将他们的代码提交到版本库中,这样其他开发者就可以访问和查看这些代码。

    • 版本管理:Git 跟踪文件的每一次更改,并允许你保存这些更改作为一个“版本”。如果你需要回退到某个特定的版本,或者查看某个文件的历史,Git 可以轻松地帮助你做到。

    • 代码合并:当多个开发者在同一文件的同一部分上进行工作时,可能会出现冲突。Git 允许你解决这些冲突,并将不同开发者的更改合并到一起。

  • 版本管理软件对比

    • SVN(Subversion)集中式版本控制系统,它有一个中心仓库(repository),所有的开发者都从这个仓库中获取和提交代码。如果中心仓库出现问题,所有的开发者都会受到影响。
    • Git分布式版本控制系统,每个开发者都有一个完整的仓库副本。这意味着即使中心仓库不可用,开发者仍然可以继续在他们自己的副本上工作,并在之后将更改同步到中心仓库。Git 的这种分布式特性使得它更加灵活和健壮。

(3)git 相关内容补充

  • Git

    • Git 是一个开源的分布式版本控制系统软件,用于敏捷高效地处理任何或小或大的项目。
  • GitHub

    • GitHub 是一个基于 Git 的代码托管和协作开发平台。 是全球最大的开源代码托管平台之一,拥有大量的开源项目和社区。
  • Gitee

    • Gitee 是国内最大的开源代码托管平台之一,与 GitHub 类似,它提供了基于 Git 的代码托管和协作开发服务。Gitee 主要面向中文开发者,拥有大量的中文开源项目和社区。
  • GitLab

    • GitLab 是一个开源的 Git 仓库管理系统。GitLab 可以在本地服务器上部署,这使其成为一个非常适合公司内部的远程仓库解决方案。GitLab 还提供了完整的 DevOps 解决方案,包括 CI/CD、监控、安全扫描等功能,使团队可以在一个平台上完成整个开发流程。
  • Bitbucket

    • Bitbucket 专注于为企业和团队提供安全、可靠的代码托管服务,并提供了一些高级功能,如权限管理、数据备份和加密等,没有开源

【二】基本使用

(1)三个区

  • 工作区(Working Directory)

    • 工作区是用户直接操作代码的地方,通常是一个文件夹。在这个区域,可以创建新的文件、修改现有的文件、删除文件或者执行其他任何文件操作。一旦修改,该修改文件就会显示红色
  • 暂存区(Staging Area)

    • 暂存区是工作区和版本库之间的桥梁。当你对工作区的文件进行了修改后,需要将这些更改添加到暂存区,以便Git能够知道哪些更改应该被包含在下一次提交中。
  • 版本库(Repository)

    • 版本库是Git用来存储所有版本信息的数据库。当将暂存区的更改提交到版本库时,Git会创建一个新的提交对象,该对象包含了关于这次更改的所有信息,如提交者、提交时间、提交说明以及一个指向父提交的指针(对于初始提交来说,这个指针是空的)。
  • 远程仓库(Remote Repository)

    • 远程仓库是存储在第三方服务器(如GitHub、Gitee、GitLab等)上的Git仓库。可以将本地仓库的更改推送到远程仓库,也可以从远程仓库拉取他人的更改。

e6a3520f-1460-400d-bbfc-3e5185ec0fb8

(2)常用命令

  • 初始化和状态相关
命令描述
git init初始化当前文件夹作为Git仓库,创建.git文件夹(不要删除)
git init 文件夹在当前文件夹下创建新文件夹,并初始化为新的Git仓库(可分步操作:mkdir 文件夹 && cd 文件夹 && git init
git status查看仓库状态,显示工作区哪些文件被修改、新增或删除
git status -s查看仓库状态的简约显示,用字符代替描述
  • 提交相关(Committing Related)
命令描述
git add 文件名/文件夹把工作区的文件或文件夹变更提交到暂存区
git add .把工作区所有变更提交到暂存区
git commit -m '注释'把暂存区的变更提交到版本库,并添加注释
git config --global user.name '用户名'全局设置Git的用户名(提交时需要)
git config --global user.email '用户邮箱'全局设置Git的用户邮箱(提交时需要)
git config user.name 'xxx'局部设置Git的用户名(提交时需要,仅对当前仓库有效)
git config user.email '4@qq.com'局部设置Git的用户邮箱(提交时需要,仅对当前仓库有效)
  • 日志相关(Logging Related)
命令描述
git log查看版本日志,显示所有的提交历史(q退出
git reflog显示HEAD的引用日志,包括所有的提交和回滚操作
git log --after 2018-x-y查看2018年x月y日之后的提交日志
git log --before 2018-x-y查看2018年x月y日之前的提交日志
git log --author author_name查看指定开发者的提交日志
  • 回退相关(Rolling Back Related)
命令描述
git checkout .撤销工作区所有文件的变更
git checkout 文件名撤销工作区指定文件的变更
git reset HEAD .撤销暂存区所有文件的提交
git reset 文件名撤销暂存区指定文件的提交
git reset --hard HEAD^回滚到上一个版本
git reset --hard HEAD~HEAD^相同,回滚到上一个版本
git reset --hard HEAD^^^回滚到上三个版本
git reset --hard HEAD~3HEAD^^^相同,回滚到上三个版本
git reset --hard 版本号回滚到指定版本号的版本

(3)git忽略文件

  • 说明

    • 在Git仓库中,有时我们并不希望跟踪所有文件和文件夹的更改,特别是那些与项目构建、配置或临时文件相关的内容。为了告诉Git哪些文件或文件夹应该被忽略,我们可以使用.gitignore文件。
    • .gitignore文件是一个文本文件,位于仓库的根目录下,用于列出应该被Git忽略的文件和文件夹模式。
  • 忽略规则

    • 文件或文件夹名:直接写文件名或文件夹名,会匹配所有目录下的同名文件或文件夹。

      node_modules  
      .idea  
      .vscode  
      __pycache__
      
    • 根目录文件或文件夹:在文件或文件夹名前加/,仅匹配仓库根目录下的文件或文件夹。

      /logs/error.log
      
    • 路径中的文件或文件夹:指定路径,匹配该路径下的文件或文件夹。

      b/a.txt
      
    • 通配符:使用*作为通配符,匹配任意字符(包括零个)。

      # 匹配所有.log和.pyc的文件
      *.log 
      *.pyc
      
    • 否定模式:在模式前加!,表示不忽略该文件或文件夹。

      !importantfile.txt
      
    • 忽略所有但指定:可以使用通配符与否定模式结合,忽略所有但指定文件。

      # 匹配所有migrations下的py文件
      **/migrationsmigrations/__init__.py/*.py  
      # 排除migrations下的__init__.py文件
      !**/migrations/__init__.py
      
  • 注意事项

    • .gitignore文件只影响尚未被跟踪的文件。如果文件已经被Git跟踪(即已经提交到仓库),则.gitignore文件中的规则不会对其产生影响。要停止跟踪这些文件,你需要从Git仓库中删除它们(使用git rm --cached命令)。
    • #符号用于在.gitignore文件中添加注释,注释行不会被Git视为忽略规则。
    • 空文件夹本身不会被Git跟踪,但是如果空文件夹中有被跟踪的文件(如.gitkeep文件或包含__init__.py的Python包),那么空文件夹也会被视为已被跟踪。
  • 后端项目忽略文件示例

    • __pycache__/ 
      *.pyc  .idea/  
      .vscode/  # 测试文件
      scripts/  # 迁移文件  
      **/migrations/*.py  
      !**/migrations/__init__.py  # 日志文件  
      *.log
      

【三】git多分支

(1)Git分支流

  • Git分支流,也称为Git分支模型Git分支策略,是Git版本控制系统中用于管理项目代码不同版本和功能的分支方式。

  • 简单介绍Gitflow分支模型

    • 主分支(master/main):这是项目的核心分支,包含了已经发布到生产环境的代码。通常,只有发布到生产环境的代码才会合并到这个分支。这个分支应该总是处于稳定状态,并反映项目的最终版本。

    • 开发分支(develop):这是用于日常开发的分支,包含了为下一个版本所做的最新开发修改。开发人员会在这个分支上进行新功能开发、代码优化等工作,并等待将这些更改合并到主分支中。

    • 功能分支(feature branches):这些分支是从开发分支创建的,用于开发新的功能。每个新的功能都可以创建一个新的功能分支。当功能开发完成后,可以将该分支合并回开发分支。

    • 发布分支(release branches):当开发分支达到稳定状态并准备发布时,会从开发分支创建一个发布分支。在这个分支上,可以进行必要的发布前测试、修复bug等工作。一旦准备就绪,就可以将发布分支合并到主分支和开发分支。

    • 补丁分支(hotfix branches):这些分支用于修复生产环境中的紧急bug。它们通常直接从主分支创建,并在修复完成后合并回主分支、开发分支和相关的发布分支。

(2)分支操作

以下是一个表格,对Git命令进行分类和简要说明,特别是关于分支管理的部分:

命令描述
git branch列出所有本地分支。当前所在分支前面会有星号(*)标记。
git branch -a列出所有本地和远程分支。
git branch 分支名创建一个新的本地分支,但不会切换到该分支。
git switch 分支名切换到指定的本地分支。从Git 2.23版本开始,推荐使用git switch代替git checkout来切换分支
git checkout 分支名切换到指定的本地分支(老方法)。
git checkout -b 分支名创建一个新的本地分支并立即切换到该分支。
git branch -d 分支名删除一个已合并的本地分支。
git branch -D 分支名git branch --delete --force 分支名强制删除一个本地分支,即使它尚未合并。
git merge 分支名将指定分支的更改合并到当前分支。在合并过程中,可能会出现冲突,需要手动解决。
  • 注意事项

    • 在合并分支之前,最好先确保工作目录是干净的(即没有未提交的更改)。可以使用git status命令来查看当前工作目录的状态。

    • 如果在合并分支时遇到冲突,Git会暂停合并过程并提示解决冲突。需要手动编辑冲突的文件,解决冲突后重新提交更改。

    • 在使用Git时,建议经常进行提交和拉取操作,以保持你的本地仓库与远程仓库的同步。

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

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

相关文章

2024网上可申请离婚,无需对方同意!

🎃很多客户决定离婚之后却因为不了解离婚流程没准备好所需材料,导致离婚失败,或者无故被对方e意拖延,无计可施,无可奈何! 🎃别怕,2024年离婚新规定已发布,离婚变的简单了…

利用管道通信(pipe)测量进程间的上下文切换(context switch)开销

利用管道通信(pipe)测量进程间的上下文切换(context switch)开销 《https://pages.cs.wisc.edu/~remzi/OSTEP/cpu-mechanisms.pdf》 Measuring the cost of a context switch is a little trickier. The lmbench benchmark does so by running two processes on a single CPU…

山东大学计算机考研数据分析,初复试占比6:4,复试内容不少得花精力准备!

山东大学(ShandongUniversity),简称山大,位于中国山东,是中华人民共和国教育部直属的综合性全国重点大学,是国家“211工程”、“985工程”重点建设院校,入选“111计划”、“珠峰计划”、“卓越工…

kafka用java收发消息

用java客户端代码来对kafka收发消息 具体代码如下 package com.cool.interesting.kafka;import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecords; i…

基于springboot+vue+Mysql的大学生社团活动平台

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

电脑缺失api-ms-win-crt-runtime-l1-1-0.dll文件的几种修复方法

当您在使用电脑过程中遇到程序启动失败,提示缺少“api-ms-win-crt-runtime-l1-1-0.dll”文件时,不必过于焦虑,此问题通常与Windows系统的Visual C Redistributable组件未正确安装或损坏有关。小编将介绍5种修复电脑缺失api-ms-win-crt-runtim…

STM32-09-IWDG

文章目录 STM32 IWDG1. IWDG2. IWDG框图3. IWDG寄存器4. IWDG寄存器操作步骤5. IWDG溢出时间计算6. IWDG配置步骤7. 代码实现 STM32 IWDG 1. IWDG IWDG Independent watchdog,即独立看门狗,本质上是一个定时器,这个定时器有一个输出端&#…

webpack生成模块关系依赖图示例:查看构建产物的组成部分 依赖关系图

npm i -D webpack-bundle-analyzer core-js babel-loaderwebpack.config.js const BundleAnalyzerPlugin require(webpack-bundle-analyzer).BundleAnalyzerPlugin; module.exports {entry: ./src/index.js,output: {filename: main.js,},// mode: production, // 或者 produ…

学前端网络安全这块还不懂?细说CSRF

什么是CSRF? 举个栗子,比如我们需要在某个博客上删除一个文章,攻击者首先在自己的域构造一个页面,使用了一个img标签,其地址指向了删除博客的链接。攻击者诱使目标用户,也就是博客主访问这个页面&#xff…

如何利用命令提示符列出文件?这里提供了几个实例供你参考

序言 什么命令可以用来列出目录中的文件?如何在命令提示符Windows 10/11中列出文件?很多人对这些问题感到困惑。在这篇文章中,我们详细解释了命令提示符列出文件的主题。 CMD(命令提示符)是一个功能强大的Windows内置…

Android实践:查看Activity信息

问题:本地Android SDK的monitor无法正常运行,看不了进程相关信息,确认当前显示Activity十分不便 解决办法:使用adb shell指令可以快速查看 命令: adb shell dumpsys activity activities 这个命令用于获取Android设…

8个迹象表明你需要一台新笔记本电脑,看一下你的笔记本是否有其中一个

序言 当你第一次打开你的笔记本电脑的盒子时,它会以最高性能运行,电池寿命更长,过热最小,资源使用效率高。然而,随着笔记本电脑的老化,它将不能满足预期用途。以下几个迹象表明,可能是时候寻找并投资一款新设备了。 你的设备不再具有预期用途 如果你的笔记本电脑不再…

大模型日报2024-05-15

大模型日报 2024-05-15 大模型资讯 OpenAI推出全新AI模型GPT-4o,具备文本、图像和音频处理能力 摘要: OpenAI公司继ChatGPT后,最新推出了名为GPT-4o的AI模型。这一模型不仅能够理解和生成文本,还新增了图像和音频的解释及生成功能。GPT-4o作为…

战网国际服怎么下载 暴雪战网一键下载安装图文教程

战网国际版,或称为Battle.net全球版,是暴雪娱乐构建的一项跨越国界的综合游戏交流平台,它无视地理限制,旨在服务全球每一个角落的游戏爱好者。不同于地区专属版本,国际版为玩家开启了一扇无门槛的大门,让每…

一文搞懂CPU是如何进行计算的?

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

参考文献自检指南

参考文献作为论文的最后组成部分,可能不是加分项,但是做不好的话绝对会被吐槽,而且是个要命的减分项。因此要做好检查,以下是一些可以遵循的规范。(如有疏漏,欢迎指出) .bib文件 1.字段的选…

Java——运行环境搭建

操作步骤: JDK的下载环境变量PATH的配置JDK的重点目录 bin: 该目录主要存放命令lib:该目录主要存放JDK的类库lib/src.zip:JDK源码 下载JDK 官网地址:https://www.oracle.com/ 安装 双击.exe文件 安装完成! 配置环…

docker安装minio附带图片

1.拉镜像 docker pull minio/minio 2.创建挂载点目录 mkdir -p /usr/local/minio/config mkdir -p /usr/local/minio/data 3.创建minio容器 docker run \ -p 19000:9000 \ -p 9090:9090 \ --nethost \ --name minio \ -d --restartalways \ -e "MINIO_ACCESS_KEYmini…

VUE之旅—day2

文章目录 Vue生命周期和生命周期的四个阶段created应用—新闻列表渲染mounted应用—进入页面搜索框就获得焦点账单统计(Echarts可视化图表渲染) Vue生命周期和生命周期的四个阶段 思考: 什么时候可以发送初始化渲染请求?&#xff…

学习笔记-C++

目录 1、何为常量 2、关键字 3、实型 4、水平制表符 5、string字符串 6、C中的三目运算符 7、随机数种子 8、结构体 9、各的区 10、引用 11、函数默认参数 12、函数占位参数 13、函数重载 14、私有属性 15、让另一个类作为本类的成员 16、声明和实现的文件…