项目一系列-第2章 Git版本控制

第2章 Git版本控制

2.1 Git概述

Git是什么?Git是一个分布式版本控制工具,于管理开发过程中的文件。

Git有哪些作用

  • 远程备份:Git可以将本地代码备份到远程服务器,防止数据丢失。
  • 多人协作:Git运行多个开发者在同一个代码库协同工作。开发者可以共享代码、合并变更、解决冲突等。
  • 代码回溯:Git可以返回之前的代码版本。用于修复错误和恢复代码。
  • 版本切换:Git可以切换分支或者不同的提交切换代码版本。

2.2 Git环境准备

1、安装Git

2、进行全局配置

3、配置SSH公钥

4、建立本地仓库及远程仓库

安装Git怎么做

下载地址:https://git-scm.com/download/win

全局配置要几步

1、设置用户信息(必须配置,用于远程连接)

git config --global user.name "ychenchen"
git config --global user.email "ycc@itcast.cn"

2、查看配置信息

git config --list

3、初始化本地仓库及远程仓库

git init

配置SSH公钥要几步?

1、生成SSH公钥

  • ssh-keygen -t rsa
    
  • 不断回车

  • 如果公钥已经存在,则自动覆盖

2、获取公钥

cat ~/.ssh/id_rsa.pub

3、到Gitee中设置SSH公钥

4、验证是否配置成功

ssh -T git@gitee.com

2.3 Git常用命令

常见命令主要分为三大类:

  • 本地仓库命令
  • 远程仓库命令
  • 分支命令

本地仓库命令

# 初始化本地仓库
git init
# 将所有文件提交到暂存区
git add .
# 将暂存区文件提交到本地仓库
git commit -m"第一次提交所有文件到本地仓库"
# 将暂存区文件取消暂存
git reset
# 查看详细的提交日志
git log
# 查看简洁的提交日志
git reflog
# 切换到指定版本
git reset --hard [version]

远程仓库命令

# 添加关联的远程仓库
git remote add <shortname> <url>
# 查看关联的远程仓库
git remote [-v]
# 提交本地仓库代码到远程仓库
git push origin master
# --set-upstream 建立起和远端分支的关联,后续可省分支名和远端名
git push [-f] [--set-upstream] [远端名称 [本地分支名][:远端分支名] ]
# 克隆远程仓库到本地
git clone <url>
# 拉取最新的远程仓库
git pull <shortname> <branch>
# fatal: refusing to merge unrelated histories
git pull --allow-unrelated-histories

分支命令

# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 列出所有本地分支和远程分支
git branch -a
# 创建分支
git branch <branchName>
# 切换分支
git checkout <branchName>
git checkout -b <branchName> # 创建并切换分支
# 合并分支:在当前分支合并其他分支
git merge <branchName>
# 删除分支
git branch -d b1 # 删除分支时,需要做各种检查
git branch -D b1 # 不做任何检查,强制删除

2.3.1 分支创建规则

以下是一些常见的Git分支创建规则:

1、主分支(master)

主分支用于项目的发布和部署,只有稳定的代码才能被合并到master分支。

master分支上,每一个tag标记一个线上版本。

2、开发分支(develop/dev)

开发分支包含项目的最新代码,但功能都在从该分支独立出来的特性分支中开发。

通常命名为developdev

3、特性分支(feature)

特性分支用于开发特定的功能,每个新功能都应在从develop分支创建的feature/xxx形式的特性分支上进行开发和测试。

4、预发布分支(release)

预发布分支用于准备发布新版本,进行最后的测试和调整,从 develop 分支创建以确保代码稳定,命名格式为release/xxx,其中xxx是具体的版本号。

测试过程中若存在bug需要修复,则直接由开发者在release分支修复并提交。

测试完成之后,将 release 分支合并到 master 和 develop 分支,此时 master 为最新代码,用作上线。

5、修复分支(hotfix/bugfix)

修复分支用于解决线上紧急bug或修复已知问题,从 master 分支创建以确保修复代码直接应用于稳定版本,命名格式为hotfix/xxxbugfix/xxx

完成bug修复后将代码合并到master分支和develop分支,合并完成后可以删除该分支。

长期稳定存在的分支只有 master 和 develop 分支,别的分支在完成对应的使命之后都会合并到这两个分支然后被删除。

简单总结如下:

分支作用
master线上稳定版本分支
develop衍生出 feature 分支和 release 分支
feature完成特定功能开发的分支,存在多个,功能合并之后删除
release准备待发布版本的分支,存在多个,版本发布之后删除
hotfix紧急热修复分支,存在多个,紧急版本发布之后删除

分支示意图如下:

2.3.2 解决冲突

下面是在命令行常见的解决冲突步骤:

  • 使用git status命令查看哪些文件存在冲突。
  • 使用git diff命令查看冲突文件的差异。
  • 手动解决冲突,并验证解决后是否正确。
  • 使用git add标记为冲突已解决。
  • 使用git commit命令提交解决冲突后的更改。

2.4 忽略文件

.gitignore忽略文件:忽略项目代码中不需要的文件,一般是编译文件、临时文件等,把它们纳入版本控制系统中毫无意义。

存放在项目的根目录。

.gitignore内容:

.git
logs
rebel.xml
target/
!.mvn/wrapper/maven-wrapper.jar
log.path_IS_UNDEFINED
.DS_Store
offline_user.md
*.class### IntelliJ IDEA ###
.idea
*.iws
*.ipr

2.5 IDEA集成Git

2.5.1 在IDEA中配置Git

在idea的settings面板中,【Version Control】=>【Git】

  • 指定Git安装路径【Path to Git executable】

2.5.2 IDEA中的操作方法

本地仓库操作

1、初始化本地仓库【Create Git Repository】

  • 依次选择菜单【Version control】—【Create Git Repository】
  • 选择当前项目根目录,点击【OK】

2、克隆远程仓库【Clone】

  • 在IDEA的菜单栏中选择Git,再点击【Get from Version Control】或者【Clone】
  • 在弹出的【Clone Repository】窗口中输入远程仓库的URL地址和对应的本地仓库存放目录,点击【Clone】按钮进行仓库克隆操作

3、将文件加入到暂存区

  • 右键文件或项目,选择【Git】,选择【Add】
  • 文件变成绿色即为成功

4、将暂存区文件提交到版本库

  • 右键文件或项目,选择【Git】,选择【Commit …】
  • 提交本次的日志信息
  • 文件变成黑色即为成功

5、查看日志

  • 右键文件或项目,选择【Git】,选择【Show History】
  • 展示了提交的日志列表信息即为成功

远程仓库操作

1、查看远程仓库和添加远程仓库

  • 右键项目,找到【Git】–>【Manage Remotes…】
  • 在弹出的框中可以查看已经关联的远程仓库,如果没有,则可以点击"+"号来新增远程仓库

2、推送至远程仓库

  • 在当前分支中,点击【Push…】
  • 在弹出的【Push Commits】窗口中可以看到本次推送的文件,点击【Push】按钮即可

3、从远程仓库拉取代码

  • 在当前分支中,点击【Update Project…】

分支操作

1、查看分支

  • 在【Version control】查看即可
  • 书签标记代表当前使用分支

2、创建分支

  • 分支窗口中点击【New Branch】,弹出输入分支名称,点击Create按钮,完成分支的创建

3、切换分支

  • 点击要切换的分支,选择【Checkout】

4、推送分支

  • 点击当前分支,选择【Push…】

5、合并分支

  • 点击要切换的分支,选择【Merge】

6、解决冲突

  • 推荐点击【Merge…】
  • 有三个框,根据实际情况合并

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

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

相关文章

Java异常:认识异常、异常的作用、自定义异常

目录1.什么是异常&#xff1f;1&#xff09;运行时异常2&#xff09;编译时异常2.异常的作用1&#xff09;Java 异常在定位 BUG 中的核心作用2&#xff09;Java 异常作为方法内部特殊返回值的作用3&#xff09;自定义异常1.什么是异常&#xff1f; Error:代表的系统级别错误(属…

第十九天-输入捕获实验

一、输入捕获概述1、输入捕获框图2、输入捕获工作详解①设置输入捕获滤波器可以设置滤波&#xff0c;滤除一些高电平脉宽不足的脉冲信号。②设置捕获极性③输入捕获映射④输入捕获分频器这里的捕获是将计数器的值存入比较寄存器中&#xff0c;分频次的作用是设置几个上升沿/下降…

多线程问题,子线程同时操作全局变量,使用后需要清空吗 ?

背景&#xff1a;目前有一个全局变量 &#xff0c;某个方法中通过多线程&#xff0c;都操作这个变量&#xff0c;向这个全局变量中去添加元素&#xff0c;然后等所有子线程执行完了之后&#xff0c;对这个全局变量进行批量保存&#xff0c;然后这个全局变量还需要手动去清空吗&…

Netty知识储备:BIO、NIO、Reactor模型

学习Netty之前&#xff0c;首先先掌握这些基础知识&#xff1a;阻塞&#xff08;Block&#xff09;与非阻塞&#xff08;Non-Block&#xff09;&#xff0c;同步&#xff08;Synchronous&#xff09;与异步&#xff08;Asynchronous&#xff09;&#xff0c;Java BIO与NIO对比。…

用生成器守住架构,用 AI 放大效率:一套可落地的 AI 编程方法论

背景与问题 现实困境: 直接让 AI 产出整块业务代码&#xff0c;常常与现有架构风格、分层边界、依赖策略不一致&#xff0c;后续改造成本高&#xff1b;AI 对现实业务语境、领域规则难以精准把握&#xff1b;在既定模板成熟的场景下&#xff0c;代码生成器往往更快、更整齐。目…

码头岸电系统如何保障供电安全?安科瑞绝缘监测及故障定位方案解析

当岸电电网是TN-S系统时&#xff0c;船体未接专用接地线且船舶电网未与岸电零线接通&#xff0c;船舶电网发生单相接地故障时&#xff0c;人站在岸上触及船体会有触电危险&#xff0c;零线上可能出现高电压&#xff0c;单相接地电流大。当船体接专用接地线且船舶电网接入岸电零…

ESP32_u8g2移植

前言 U8g2 是一个用于嵌入式设备的单色图形库。U8g2支持单色OLED和LCD&#xff0c;并支持如SSD1306 SSD1315等多种类型的OLED驱动&#xff0c;几乎市面上常见都支持。 U8g2源码 download&#xff1a;https://github.com/olikraus/u8g21&#xff1a;环境 ESP32 S3(ESP32-S3-Dev…

MCP实现:.Net实现MCP服务端 + Ollama ,MCP服务端工具调用

本文使用.Net编写MCP服务端 Ollama &#xff0c;实现简单MCP调用&#xff0c;代码仅实现基本演示功能。 文章目录一、Ollama如何安装使用二、创建.Net8项目&#xff0c;开发MCP服务端三、开发MCP客户端&#xff0c;并对接Ollama一、Ollama如何安装使用 请移步&#xff1a;htt…

Docker的安装使用以及常见的网络问题

一、什么是DockerDocker是一种容器化技术&#xff0c;用于快速打包、分发和运行程序。他的核心思想是"一次构建&#xff0c;到处运行"&#xff0c;通过将应用及其依赖的环境打包到一个轻量级、可移植的容器中&#xff0c;实现跨平台一致运行。二、Docker的安装1.Cent…

C++入门学习

1.命名空间的介绍首先我们看到如下的代码&#xff0c;在C语言中&#xff1a;#include <stdio.h> #include <stdlib.h> int rand 10; // C语言没办法解决类似这样的命名冲突问题&#xff0c;所以C提出了namespace来解决 int main() {printf("%d\n", rand…

解决python错误:playwright._impl._errors.TimeoutError: Timeout 30000ms exceeded.

from playwright.sync_api import sync_playwrightwith sync_playwright() as p:browser = p.chromium.launch(headless=False)page = browser.new_page() page.goto(url)page.wait_for_load_state(networkidle) 在Python环境中运行以上代码后报错: page.wait_for_load_…

爬虫逆向之雷池waf

本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的。否则由此产生的一切后果均与作者无关&#xff01; 雷池waf概念 雷池 WAF&#xff08;SafeLine&#xff09;是长亭科技开源的一款 Web 应用防火墙&#xff0c;部署在网站前面&#xff0c;把所有进来的 HTTP/…

23种设计模式解析--行为型

行为型模式&#xff08;协作的艺术&#xff09; 观察者模式 观察者模式详解 模式定义 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式&#xff0c;用于建立对象间一对多的依赖关系。当一个对象&#xff08;Subject&#xff09;状态变化时&#xff0c;所…

Linux系统之lua 详解

命令简介 lua 是 Lua 语言的解释器&#xff0c;用于加载和执行 Lua 程序&#xff08;包括文本源码和预编译的二进制文件&#xff09;。它支持两种运行模式&#xff1a;批处理模式&#xff08;执行指定脚本文件&#xff09;和交互式模式&#xff08;逐行读取并执行输入的命令&am…

visual studio 无明显错误,但是无法编译成功解决—仙盟创梦IDE

往后面查看rror CS0246: 未能找到类型或命名空间名“SimpleClass”(是否缺少 using 指令或程序集引用?)修复阿雪技术观在科技发展浪潮中&#xff0c;我们不妨积极投身技术共享。不满足于做受益者&#xff0c;更要主动担当贡献者。无论是分享代码、撰写技术博客&#xff0c;还是…

《论文阅读》传统CoT方法和提出的CoT Prompting的区分

论文&#xff1a;Chain-of-Thought Prompting Elicits Reasoning in Large Language Models作者对传统CoT方法和本文提出的CoT Prompting的区分。1. 传统方法的局限性 (1) 基于微调的CoT&#xff08;Rationale-Augmented Training&#xff09; 实现方式&#xff1a;需人工标注大…

Minio 高性能分布式对象存储

1、什么是对象存储? 描述: 对象存储&#xff08;Object Storage&#xff09;是一种存储数据的计算机体系结构&#xff0c;它以对象的形式存储和管理数据。与传统的文件系统和块存储不同&#xff0c;对象存储将数据作为对象存储在分布式的存储集群中&#xff0c;每个对象都有一…

[深度学习] 大模型学习4-RAG技术全景解析

在大语言模型基础知识一文中&#xff0c;检索增强生成&#xff08;Retrieval-Augmented Generation&#xff0c;简称 RAG&#xff09;技术作为构建大语言模型&#xff08;Large Language Model&#xff0c;简称 LLM&#xff09;应用的一种方式已被简要提及&#xff0c;本文将详…

4G/5G无线电单元系统

4G/5G无线电单元系统 ADI公司的核心技术和领域专业知识帮助客户在全球范围内规划、设计、打造更出色的高性能通信系统。 我们的无线电单元(RU)设计平台利用新一代技术来提供高性能解决方案&#xff0c;帮助客户消除设计障碍、缩短产品开发周期&#xff0c;加快产品上市时间。 价…

HarvardX TinyML小笔记1(番外2:神经网络)

1 介绍 图片来自&#xff1a;https://zh.wikipedia.org/zh-cn/%E4%BA%BA%E5%B7%A5%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C 神经网络一直感觉挺神奇的&#xff0c;江湖也说可解释性很差&#xff0c;无论如何还是学学吧。借这次学习哈佛的TinyML&#xff0c;也就顺带弄了。 这里…