git版本控制工具介绍

版本控制

版本控制是软件开发过程中用于管理代码变更的重要手段,它可以记录代码的历史版本,方便开发者进行回溯、协作和问题排查。本地版本控制、集中版本控制和分布式版本控制是三种不同的版本控制模式

本地版本控制

本地版本控制是最基础的版本控制方式,它只在单个计算机上进行操作,通过某种机制来管理文件的不同版本。这种方式主要用于个人开发者管理自己的项目,记录文件在不同时间点的状态。(在个人电脑上留存了个人的版本信息记录)

集中版本控制

集中版本控制采用中央服务器来存储所有文件的版本信息,团队成员通过连接到中央服务器来获取和提交代码。所有的版本数据都集中管理,开发者需要与中央服务器进行交互来进行版本控制操作(SVN),便于团队协作,但如果中央服务器出现故障,所有的版本会有丢失风险

分布式版本控制

分布式版本控制中,每个开发者的本地仓库都是一个完整的版本库,包含了项目的所有历史记录和版本信息。开发者可以在本地进行各种版本控制操作,如提交、分支管理等,而不需要实时连接到中央服务器。缺点是占用空间大,因为每个开发者的本地仓库都包含完整的项目历史记录

版本控制工具Git

Git 是一款强大的分布式版本控制系统,被广泛应用于软件开发中,用于管理项目代码的变更历史。以下将从基础概念、安装配置、基本操作、分支管理、远程仓库协作等方面详细介绍 Git 版本控制。

基础概念
  • 仓库(Repository):包含项目所有文件以及文件历史记录的集合。分为本地仓库和远程仓库,本地仓库在开发者自己的计算机上,远程仓库通常存放在代码托管平台(如 GitHub、GitLab 等)。
  • 提交(Commit):将文件的当前状态保存到本地仓库的操作,每次提交都会生成一个唯一的哈希值(commit ID),用于标识这次变更。
  • 分支(Branch):可以理解为项目的不同开发线路,每个分支独立发展,互不影响。通过创建分支,开发者可以同时进行多个不同功能的开发。
  • 合并(Merge):将一个分支的变更整合到另一个分支的操作。例如,将开发分支的代码合并到主分支。
  • 拉取(Pull):从远程仓库获取最新代码并合并到本地仓库的操作。
  • 推送(Push):将本地仓库的提交推送到远程仓库的操作。
安装与配置
  • 安装:根据不同的操作系统,可以从 Git 官方网站 下载相应的安装包进行安装。
  • 配置用户信息:安装完成后,需要配置用户名和邮箱,这些信息会关联到你的提交记录。
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
git config -l
git config --system --list
git config --global --list

检查是否配置成功

基本操作

git一般有四个工作区域,分为工作区、暂存区、本地仓库、远程仓库

初始化仓库

在项目目录下执行以下命令,将一个文件夹变成仓库。

git init

添加文件到暂存区(仓库)

将修改或新增的文件添加到暂存区,准备进行提交。

# 添加单个文件
git add file_name
# 添加所有文件
git add .

提交文件到本地仓库

将暂存区的文件提交到本地仓库,并添加提交说明。

git commit -m "提交说明"

可以右键打开GUI观察添加过程

查看状态

查看当前工作目录和暂存区的文件状态。

git status

查看提交历史

查看仓库的提交历史记录。

git log

远程仓库协作

关联远程仓库

    1. 注册gitee账号,注册完后进入设置配置公钥

     2. 通过命令 ssh-keygen 生成 SSH Key:

        输入ssh-keygen命令,然后全部回车

查看生成的公钥和私钥:ls ~/.ssh/

读取公钥文件:cat ~/.ssh/id_ed25519.pub(这个是我自己的公钥文件,替换成你自己的公钥文件之后执行)

将生成的公钥粘贴到SSH公钥框中:

接下来创建仓库:

创建好后取SSH地址,创建一个用于接收远程仓库的文件夹,输入克隆命令:git clone 输入你自己的SSH地址,刚开始创建仓库的小伙伴会遇到警告,因为仓库中没有文件,不必理会

此时用于接收远程仓库的文件夹里会有对应文件,打开后有.git文件

接下来就可以从本地仓库向远程仓库发送文件了

在该文件夹下输入

git add .
git commit -m "第一次发送到远程仓库"
git push 

此时在远程仓库中就生成了对应的文件夹

再放一遍操作关系图片

 分支管理

在软件开发等项目中,通常会有多个功能需要同时开发,或者需要同时进行新功能开发和旧版本维护等工作。通过创建不同的分支,开发人员可以在各自的分支上独立地进行开发、测试等工作,互不干扰。

创建分支

创建一个新的分支。

git branch branch_name

切换分支

切换到指定的分支。

git checkout branch_name

创建并切换分支

可以将创建分支和切换分支的操作合并为一步。

git checkout -b branch_name

合并分支

将指定分支的变更合并到当前分支。

# 假设当前在主分支,要合并 feature 分支的变更
git merge feature

删除分支

删除指定的分支。

git branch -d branch_name

执行完分支语句后需要在重新发送到远程仓库,在发送之前先要拉取远程仓库里的内容

        原因:在多人协作开发中,不同开发者可能会同时对同一文件的同一部分进行修改。如果直接推送本地修改而不先拉取远程更新,就可能导致本地和远程的修改相互冲突,Git 无法自动合并这些修改。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入解析 vLLM:高性能 LLM 服务框架的架构之美(二)调度管理

深入解析 vLLM:高性能 LLM 服务框架的架构之美(一)原理与解析 深入解析 vLLM:高性能 LLM 服务框架的架构之美(二)调度管理 1. vLLM 调度器结构与主要组件 在 vLLM 中,调度器的结构设计围绕任务…

重构测试项目为spring+springMVC+Mybatis框架

重构测试项目为springspringMVCMybatis框架 背景 继上次将自动化测试时的医药管理信息系统项目用idea运行成功后,由于项目结构有些乱,一部分代码好像也重复,于是打算重新重构以下该项目,这次先使用springspringMVCMybatis框架 …

RAGFlow

相关链接 ragflow.io 官网 github 相关术语 RAG “Retrieval-Augmented Generation”(RAG)是一种结合了检索(Retrieval)和生成(Generation)的深度学习模型架构。这种模型通常用于处理自然语言处理&…

java断点调试(debug)

在开发中,新手程序员在查找错误时, 这时老程序员就会温馨提示,可以用断点调试,一步一步的看源码执行的过程,从而发现错误所在。 重要提示: 断点调试过程是运行状态,是以对象的运行类型来执行的 断点调试介绍 断点调试是…

最新智能优化算法: 阿尔法进化(Alpha Evolution,AE)算法求解23个经典函数测试集,MATLAB代码

一、阿尔法进化算法 阿尔法进化(Alpha Evolution,AE)算法是2024年提出的一种新型进化算法,其核心在于通过自适应基向量和随机步长的设计来更新解,从而提高算法的性能。以下是AE算法的主要步骤和特点: 主…

llama.cpp部署 DeepSeek-R1 模型

一、llama.cpp 介绍 使用纯 C/C推理 Meta 的LLaMA模型(及其他模型)。主要目标llama.cpp是在各种硬件(本地和云端)上以最少的设置和最先进的性能实现 LLM 推理。纯 C/C 实现,无任何依赖项Apple 芯片是一流的——通过 A…

国产编辑器EverEdit - 如虎添翼的功能:快速选择

1 快速选择 1.1 应用场景 快速选择适用于批量选择和修改的场景,比如:变量改名。 1.2 使用方法 1.2.1 逐项快速选择 将光标放置在单词前或单词中,选择主菜单查找 -> 快速选择 -> 快速选择或使用快捷键Ctrl D 注:光标放…

基于flask+vue的租房信息可视化系统

✔️本项目利用 python 网络爬虫抓取某租房网站的租房信息,完成数据清洗和结构化,存储到数据库中,搭建web系统对各个市区的租金、房源信息进行展示,根据各种条件对租金进行预测。 1、数据概览 ​ 将爬取到的数据进行展示&#xff…

vue非组件的初学笔记

1.创建Vue实例,初始化渲染的核心 准备容器引包创建Vue实例new Vue() el用来指定控制的盒子data提供数据 2.插值表达式 作用利用表达式插值,将数据渲染到页面中 格式{{表达式}} 注意点 表达式的数据要在data中存在表达式是可计算结果的语句插值表达式…

Spring 事务及管理方式

Spring 事务管理是 Spring 框架的核心功能之一,它为开发者提供了一种方便、灵活且强大的方式来管理数据库事务。 1、事务的基本概念 事务是一组不可分割的操作序列,这些操作要么全部成功执行,要么全部失败回滚,以确保数据的一致…

百达翡丽(Patek Philippe):瑞士制表的巅峰之作(中英双语)

百达翡丽(Patek Philippe):瑞士制表的巅峰之作 在钟表界,百达翡丽(Patek Philippe) 一直被誉为“世界三大名表”之一,并且常被认为是其中的至高存在。一句“没人能真正拥有一枚百达翡丽&#x…

153~173笔记

Pinia是Vue的最新状态管理工具,是Vuex的替代品 提供更加简单的API(去掉了mutation) 提供符合,组合式风格的API(和Vue3新语法统一) 去掉了modules的概念,每一个store都是一个独立的模块 配合Type…

【论文笔记】Transformer^2: 自适应大型语言模型

Code repo: https://github.com/SakanaAI/self-adaptive-llms 摘要 自适应大型语言模型(LLMs)旨在解决传统微调方法的挑战,这些方法通常计算密集且难以处理多样化的任务。本文介绍了Transformer(Transformer-Squared)…

c语言-链表习题

1.尾插法 Q6544 涉及: (1)创建链表 struct stu* createList() {struct stu *head NULL, *tail NULL, *newNode;char choice;char name[20];float price;do {printf("请输入书名 价格:\n");scanf("%s %f",…

阿里云一键部署DeepSeek-V3、DeepSeek-R1模型

目录 支持的模型列表 模型部署 模型调用 WebUI使用 在线调试 API调用 关于成本 FAQ 点击部署后服务长时间等待 服务部署成功后,调用API返回404 请求太长导致EAS网关超时 部署完成后,如何在EAS的在线调试页面调试 模型部署之后没有“联网搜索…

Springboot集成Spring AI和Milvus,验证RAG构建过程

在当今信息爆炸的时代,如何高效地管理和利用海量的知识数据成为了企业和开发者面临的重大挑战。基于AI的大模型和检索增强生成(RAG, Retrieval-Augmented Generation)技术为这一难题提供了全新的解决方案。通过结合向量数据库、Embedding技术…

用React实现一个登录界面

使用React来创建一个简单的登录表单。以下是一个基本的React登录界面示例: 1. 设置React项目 如果你还没有一个React项目,你可以使用Create React App来创建一个。按照之前的步骤安装Create React App,然后创建一个新项目。 2. 创建登录组…

Python爬虫实战:股票分时数据抓取与存储 (1)

在金融数据分析中,股票分时数据是投资者和分析师的重要资源。它能够帮助我们了解股票在交易日内的价格波动情况,从而为交易决策提供依据。然而,获取这些数据往往需要借助专业的金融数据平台,其成本较高。幸运的是,通过…

通过BingAPI爬取Bing半个月内壁纸

通过BingAPI爬取Bing半个月内壁纸 一、前言二、爬虫代码三、代码说明 一、前言 爬取Bing搜索网站首页壁纸的方式主要有两种,第一种为间接爬取,即并不直接对Bing网站发起请求,而是对那些收集汇总了Bing壁纸的网站发起请求,爬取图片…

matlab汽车动力学半车垂向振动模型

1、内容简介 matlab141-半车垂向振动模型 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略