讲讲git 和svn
讲讲git 和svn
- 目录
- Git到底是什么?它该怎末用?
- 核心概念
- 基础操作
- 1. 仓库的创建
- 2. 文件的提交工作流程
- 3. 分支管理
- 4. 远程仓库操作
- 进阶操作
- 实际应用建议
- **基本用法**
- **常用命令的帮助示例**
- **帮助文档的结构**
- **替代方法**
- **练习建议**
- **核心概念**
- **与Git的主要区别**
- **基本操作**
- 1. **仓库操作**
- 2. **文件管理**
- 3. **提交与更新**
- 4. **查看历史**
- 5. **分支与合并**
- **优缺点**
- **适用场景**
- **Git迁移建议**
- **SVN vs Git总结**
目录
Git到底是什么?它该怎末用?
Git 是一款被广泛应用的分布式版本控制系统,在软件开发领域发挥着重要作用。它主要用于对项目文件的更改进行跟踪,能够有效协调多个开发者在同一项目上开展协作。下面为你详细介绍其基本概念和常见的使用方法。
核心概念
- 仓库(Repository):这里面存放着项目的文件以及文件的历史变更记录。
- 提交(Commit):它相当于文件状态的“快照”,每一次提交都记录了文件的更改情况。
- 分支(Branch):分支是独立的开发线路,借助分支可以在不影响主分支的前提下对新功能进行开发。
- 合并(Merge):合并是将不同分支上的更改整合到一起的操作。
- 远程仓库(Remote):远程仓库是存储在网络上的仓库,像 GitHub、GitLab 等平台上的仓库就是典型的远程仓库。
基础操作
1. 仓库的创建
- 初始化本地仓库:在项目目录下执行以下命令,就可以创建一个新的 Git 仓库。
git init
- 克隆远程仓库:使用该命令能够将远程仓库的内容复制到本地。
git clone <远程仓库URL>
2. 文件的提交工作流程
- 查看文件状态:通过这个命令可以了解文件的修改情况。
git status
- 添加文件到暂存区:执行此命令可将文件添加到暂存区,为后续的提交做准备。
git add <文件名> # 添加指定文件 git add . # 添加所有文件
- 提交更改:将暂存区的文件更改提交到本地仓库。
git commit -m "提交说明"
3. 分支管理
- 查看分支:查看当前仓库中存在的分支。
git branch
- 创建新分支:创建一个新的分支用于开发新功能。
git branch <分支名>
- 切换分支:从当前分支切换到指定分支。
git checkout <分支名>
- 创建并切换分支:这是一个组合命令,用于快速创建并切换到新分支。
git checkout -b <分支名>
- 合并分支:将指定分支的更改合并到当前分支。
git merge <分支名>
4. 远程仓库操作
- 关联远程仓库:将本地仓库与远程仓库进行关联。
git remote add origin <远程仓库URL>
- 推送至远程仓库:把本地仓库的提交推送到远程仓库。
git push -u origin <分支名>
- 拉取远程更新:获取远程仓库的最新更改并合并到本地。
git pull origin <分支名>
进阶操作
- 查看提交历史:查看仓库的提交记录。
git log
- 撤销更改:放弃工作区的修改。
git checkout -- <文件名>
- 版本回退:将仓库回退到指定的提交版本。
git reset --hard <提交哈希值>
- 解决冲突:当合并分支出现冲突时,需要手动编辑冲突文件,然后进行提交。
# 编辑冲突文件后 git add <冲突文件> git commit
实际应用建议
- 使用
.gitignore
文件:在项目根目录创建该文件,用于排除那些不需要被 Git 跟踪的文件,像依赖文件、日志文件等。 - 保持提交说明清晰:编写有意义的提交说明,方便后续查阅和理解更改内容。
- 遵循分支管理策略:可以采用 Git Flow 或 GitHub Flow 等分支管理策略,规范开发流程。
- 定期备份到远程仓库:养成定期将本地提交推送到远程仓库的习惯,防止数据丢失。
git help <命令>
是 Git 自带的强大文档工具,用于查看特定 Git 命令的详细使用说明和示例。以下是使用方法和常见命令的帮助示例:
基本用法
git help <命令> # 打开浏览器查看HTML格式的帮助文档
git help -m <命令> # 以man手册格式查看(终端内显示)
git help -a # 列出所有可用命令
git help -g # 列出所有帮助主题
常用命令的帮助示例
-
查看
git commit
的帮助git help commit
这将显示
commit
命令的完整文档,包括参数说明、提交消息规范和示例。 -
查看
git branch
的帮助git help branch
文档会解释如何创建、删除和管理分支,以及与远程分支的关联。
-
查看
git merge
的帮助git help merge
帮助文档的结构
Git 帮助文档通常包含以下部分:
- SYNOPSIS:命令的基本语法和参数格式。
- DESCRIPTION:命令的功能和适用场景。
- OPTIONS:每个参数的详细说明。
- EXAMPLES:实用示例(重点关注这部分!)。
- SEE ALSO:相关命令和参考资料。
替代方法
如果你不想打开浏览器,可以直接在终端使用 man
命令:
man git-<命令> # 例如:man git-commit
对于快速参考,也可以使用简化版帮助:
git <命令> --help # 例如:git commit --help
练习建议
- 运行
git help config
,学习如何配置 Git 的用户信息、别名等。 - 查看
git help remote
,了解如何管理远程仓库。 - 通过
git help log
学习如何使用高级日志筛选(如--author
、--since
等)。
掌握 git help
可以让你在遇到问题时快速找到答案,无需依赖外部教程!
SVN(Subversion)是一种集中式版本控制系统,诞生于2000年,旨在替代CVS成为更高效的代码管理工具。与Git的分布式架构不同,SVN采用中央服务器+客户端的模式,所有文件和历史记录都存储在中央服务器上。
核心概念
-
中央仓库(Repository)
唯一的代码源,存储所有文件和历史版本,类似Git的远程仓库。 -
工作副本(Working Copy)
从中央仓库下载到本地的文件,用户直接编辑工作副本,再提交更改到服务器。 -
版本号(Revision)
每次提交都会生成全局递增的版本号(如r1
,r2
),代表仓库的整体状态。 -
原子提交(Atomic Commit)
提交操作要么全部成功,要么失败回滚,确保仓库一致性。
与Git的主要区别
特性 | SVN(集中式) | Git(分布式) |
---|---|---|
架构 | 依赖中央服务器 | 本地完整仓库,无需联网 |
分支成本 | 高(物理复制整个目录) | 极低(创建指针) |
离线工作 | 不支持 | 完全支持 |
提交对象 | 整个仓库的快照 | 本地提交,后推送到远程 |
版本号 | 全局递增整数 | 40位哈希值 |
基本操作
1. 仓库操作
svnadmin create /path/to/repo # 创建新仓库(服务器端)
svn checkout svn://server/repo # 检出工作副本到本地(客户端)
2. 文件管理
svn add file.txt # 添加文件到版本控制
svn delete file.txt # 删除文件
svn move old.txt new.txt # 重命名/移动文件
3. 提交与更新
svn update # 从服务器拉取最新变更
svn commit -m "说明" # 提交本地更改到服务器
4. 查看历史
svn log # 查看提交历史
svn diff # 查看文件差异
svn status # 查看工作副本状态
5. 分支与合并
svn copy trunk branches/new-feature # 创建分支
svn merge branches/new-feature trunk # 合并分支
优缺点
-
优点
- 简单易用,适合小型团队和单一代码库。
- 清晰的权限管理(基于路径控制)。
- 对二进制文件(如图像、文档)支持更好。
-
缺点
- 依赖中央服务器,离线无法工作。
- 分支操作笨重,合并容易出错。
- 大数据量下性能较差。
适用场景
- 小型团队或个人项目。
- 需要严格权限控制的场景(如按目录限制访问)。
- 管理非代码资产(如文档、设计文件)。
Git迁移建议
若想从SVN迁移到Git,可以使用:
git svn clone svn://server/repo # 迁移SVN仓库到Git
但需注意保留分支和提交历史的完整性。
SVN vs Git总结
- SVN:适合简单、集中化管理,依赖中央服务器。
- Git:适合复杂协作、频繁分支,本地仓库强大。
现代开发中,Git已成为主流选择,但SVN在特定场景(如企业遗留系统)仍有使用价值。
创作不易 点点关注呀
相关文章:
讲讲git 和svn
讲讲git 和svn 目录Git到底是什么?它该怎末用?核心概念基础操作1. 仓库的创建2. 文件的提交工作流程3. 分支管理4. 远程仓库操作 进阶操作实际应用建议**基本用法****常用命令的帮助示例****帮助文档的结构****替代方法****练习建议****核心概念****与Gi…...
运用数组和矩阵对数据进行存取和运算——NumPy模块 之四
目录 NumPy模块介绍 3.4 NumPy 数组重塑与转置 3.4.1 操作机制的理论逻辑 3.4.2 一维数组的重塑 3.4.3 多维数组的重塑 3.4.4 数组的转置操作 3.4.5 知识点总结与课程回顾 3.4.6 课后练习题 NumPy模块介绍 NumPy 是 Python 科学计算领域的重要基石,与当前 “躺吃旅行…...
机器学习第六讲:向量/矩阵 → 数据表格的数学表达,如Excel表格转数字阵列
机器学习第六讲:向量/矩阵 → 数据表格的数学表达,如Excel表格转数字阵列 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:…...
服务器多JAR程序运行与管理指南
在同一台服务器上同时运行多个JAR程序是完全可以的,但需要注意以下几点以确保稳定性和性能: 关键注意事项 端口冲突 如果JAR程序是网络服务(如Web应用),确保每个程序监听不同的端口(例如:8080、…...
vue实现进度条带指针
效果最终 function calculatePointerPosition(value) {if (value < 2.6) return 12.5; // 非常差位置if (value < 5.1) return 37.5; // 较差位置if (value < 7.1) return 62.5; // 良好位置return 90; // 非常满意位置 }function getStatusText(value) {if (valu…...
【C++】智能指针
前言 上文我们学到了C11的异常,了解到了C与C语言处理错误的区别,异常的特点在于抛出与接收。【C11】异常-CSDN博客 本文我们来学习C中的下一个功能:智能指针 1.智能指针的使用场景 在上文我们知道了抛异常的知识,抛异常的“抛”这…...
Adobe Acrobat pro在一份PDF中插入空白页
在Adobe Acrobat pro中先打开我们的PDF文件; 用鼠标点击需要插入空白页处的上一页; 然后如下图操作: 默认会在光标处的下一页插入一张空白页,你也可以修改插入页的页码或者向前一页插入...
Oracle adg环境下调整redo日志组以及standby日志组大小
1.在adg环境中,调整redo日志组大小以及standby日志组大小主要思路如下: a、先备库增加standby redo 删除老standby redo, b、然后主库增加redo删除老redo, c、备库增加新redo删除老redo, d、最后主库增加standby redo。 #主库 [oracleDB196 ~]$ sql / a…...
Nlog适配达梦数据库进行日志插入
前言 原来使用的是SQLServer数据库,使用Nlog很流畅,没有什么问题。现在有个新项目需要使用麒麟操作系统和达梦数据库,业务流程开发完成之后发现Nlog配置文件中把数据库连接内容修改之后不能执行插入操作。 原Nlog.config配置 <?xml ve…...
记一次redis未授权被种挖矿
#挖矿程序 /etc/httpgd /etc/nnt.sh #大小问 #定时任务名为root /var/spool/cron/root 内容:*/50 * * * * sh /etc/nnt.sh >/dev/null 2>&1 定时任务只有所有者可以写,且chmod修改权限失败。 #先查看定时任务的拓展属性,不可变(i…...
Docker私有仓库实战:官方registry镜像实战应用
抱歉抱歉,离职后反而更忙了,拖了好久,从4月拖到现在,在学习企业级方案Harbor之前,我们先学习下官方方案registry,话不多说,详情见下文。 注意:下文省略了基本认证 TLS加密ÿ…...
LeetCode 热题 100_只出现一次的数字(96_136_简单_C++)(哈希表;哈希集合;排序+遍历;位运算)
LeetCode 热题 100_只出现一次的数字(96_136_简单_C) 题目描述:输入输出样例:题解:解题思路:思路一(哈希表):思路二(哈希集合):思路三…...
基于FastAPI框架的日志模块设计
以下是一个基于FastAPI框架设计的日志模块,结合SQLite数据库实现增删改查功能的完整实现方案: 1. 项目结构 your_project/ ├── app/ │ ├── logs/ # 日志模块目录 │ │ ├── models.py # 数据库模型定义 │ │ …...
网页禁止粘贴的解决方法(以学习通网页为例)
网页禁止粘贴的解决方法(以学习通网页为例) 学数据挖掘,学习通过作业的简答题要英文做答还竟然不能复制粘贴,受不了了 下面给出解决办法 1.想着是网页JS的问题,既然不能直接粘贴,那就在源码里面修改 2.于…...
Linux常用命令详解(下):打包压缩、文本编辑与查找命令
一、打包压缩命令 在Linux系统中,打包与压缩是文件管理的核心操作之一。不同的工具适用于不同场景,以下是最常用的命令详解: 1. tar命令 作用:对文件进行打包、解包、压缩、解压。 语法: tar [选项] [压缩包名] […...
前端面经 计网 http和https区别
HTTP 超文本传输 忒点: 支持CS 客户/服务器模式 方便快捷 简单 允许传输任意类型的数据 在报文头中的Content-Type中声明 无连接,一次连接仅处理一个请求 无状态 不保留上一次的状态 HTTPS 解决HTTP明文传输 在HTTP基础上增加SSL协议 HTTP版本 …...
mac一键安装gpt-sovit教程中,homebrew卡住不动的问题
mac一键安装gpt-sovit教程 仅作为安装过程中解决homebrew卡住问题的记录 资源地址 https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/znoph9dtetg437xb#mlAoP 下载一键包 下载后并解压,找到install for mac.sh,终端执行bash空格拖拽in…...
05_jdk8新特性
文章目录 一、jdk8新特性1. Lambda表达式2. Stream API3. 函数式接口4. 默认方法5. 方法引用6. 新的日期和时间API7. Optional类8. 并发增强 二、常用函数式接口1. Supplier<T>2. Consumer<T>3. Function<T,R>4. Predicate<T> 一、jdk8新特性 JDK 8&a…...
解决IDEA Maven编译时@spring.profiles.active@没有替换成具体环境变量的问题
如果不加filtering true,编译后的文件还是 spring.profiles.active 编译前的application.yml 编译后的application.yml【环境变量没有改变】 解决方案 找到 SpringBoot 启动类所在的pom.xml,在 resources 增加 filtering true,然后重新…...
HTML17:表单初级验证
表单初级验证 常用方式 placeholder 提示信息 <p>名字:<input type"text" name"username" maxlength"8" size"30" placeholder"请输入用户名"></p>required 非空判断 <p>名字:<input type"…...
vue3+dhtmlx-gantt实现甘特图展示
最终效果 数据源demo {"data": [{"actual_end_date": "2025-04-23","actual_start_date": "2025-04-15","duration": 10,"end_date": "2025-05-01","id": "2|jvUiek",&…...
Jupyter-AI Pandas-AI本地使用功能优化
引言 Jupyter-ai 和 Pandas-ai 的优化主要是个人工作遇到的需求,个人觉得是一个不错的体验优化,所以进行分享仅供参考,不喜勿喷,共同进步!Jupyter-AI优化主要包含以下方向(当前已实现): Jupyter-AI中 Chat 扩展和 NoteBook 的 Cell 工作去部分,使用的Language Model 和 …...
Model.eval() 与 torch.no_grad() PyTorch 中的区别与应用
Model.eval() 与 torch.no_grad(): PyTorch 中的区别与应用 在 PyTorch 深度学习框架中,model.eval() 和 torch.no_grad() 是两个在模型推理(inference)阶段经常用到的函数,它们各自有着独特的功能和应用场景。本文将详细解析这两…...
mac M2下的centos8:java和jenkins版本匹配,插件安装问题
java和jenkins版本匹配如下: Java Support Policy 如果版本不匹配,jenkins无法正常启动,插件也无法安装成功。 实际操作过程发现:表格也并不全然正确,还是需要特定的版本才能正常 参考如下: jenkins安装…...
PyTorch 中的 Autograd 实现细节解析和应用
摘要: 本文深入探讨 PyTorch 框架的核心组件之一——Autograd 机制。我们将解析其内部工作原理,包括计算图的构建、梯度的计算与传播,并探讨其在神经网络训练、模型调试及可解释性等方面的广泛应用。 通过理解 Autograd 的实现细节,开发者可以更高效地利用 PyTorch 进行深度…...
【AI提示词】波特五力模型专家
提示说明 具备深入对企业竞争环境分析能力的专业人士。 提示词 # Role:波特五力模型专家## Profile - language:中文 - description:具备深入对企业竞争环境分析能力的专业人士 - background:熟悉经济学基础理论,擅长用五力模型分析行业竞争 - personality…...
python 的 uv、pip 和 conda 对比和技术选型
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...
《Python星球日记》 第63天:文本方向综合项目(新闻分类)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、项目需求分析1. 项目背景与目标2. 功能需求3. 技术方案概述 二、数据清洗与…...
面试题:请解释Java中的设计模式,并举例说明单例模式(Singleton Pattern)的实现方式
Java中的设计模式 设计模式是在软件开发过程中针对特定场景而使用的通用解决方案。设计模式可以帮助开发者编写出更加清晰、灵活和可维护的代码。设计模式分为三大类: 创建型模式:用于对象的创建过程,如单例模式、工厂模式、建造者模式等。…...
MySQL全量、增量备份与恢复
目录 一:MySQL数据库备份概述 1.数据备份的重要性 2.数据库备份类型 2.1从物理与逻辑的角度分类 物理备份 逻辑备份 2.2从数据库的备份策略角度分类 完全备份 差异备份 增量备份 3.常见的备份方法 3.1物理冷备份 3.2专用备份工具 MySQL dump或MySQL hot…...
rust 全栈应用框架dioxus server
接上一篇文章dioxus全栈应用框架的基本使用,支持web、desktop、mobile等平台。 可以先查看上一篇文章rust 全栈应用框架dioxus👈 既然是全栈框架,那肯定是得有后端服务的,之前创建的服务没有包含后端服务包,我们修改…...
Clinica集成化的开源平台-神经影像研究
Clinica集成化的开源平台-神经影像研究 🌟 Clinica集成化的开源平台-神经影像研究引言 🛠️ 一、环境搭建与数据准备1. 安装Clinica(附避坑指南)2. 数据标准化(BIDS格式处理) 🧠 二、sMRI预处理…...
LabVIEW中算法开发的系统化解决方案与优化
在 LabVIEW 开发环境中,算法实现是连接硬件数据采集与上层应用的核心环节。由于图形化编程范式与传统文本语言存在差异,LabVIEW 中的算法开发需要特别关注执行效率、代码可维护性以及与硬件资源的适配性。本文从算法架构设计、性能优化到工程实现&#x…...
【Pandas】pandas DataFrame cov
Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...
【递归、搜索与回溯】专题一:递归(一)
📝前言说明: 本专栏主要记录本人递归,搜索与回溯算法的学习以及LeetCode刷题记录,按专题划分每题主要记录:(1)本人解法 本人屎山代码;(2)优质解法 优质代码…...
pythonocc 拉伸特征
micromamba install -c conda-forge pythonocc-core opencascade.js安装不起来,ai用pythonocc练个手 拉伸线框 线成面 from OCC.Core.gp import gp_Pnt, gp_Dir, gp_Vec from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeEdge, BRepBuilderAPI_MakeWire f…...
防爆手机与普通手机有什么区别
在石油化工、矿山能源、危化品运输等特殊行业中,一部手机的选择可能直接关系到生产安全与人员生命。防爆手机作为工业安全通信的核心工具,与日常使用的普通手机存在本质差异。本文将从技术原理、安全标准、功能设计及适用场景等维度,解析二者…...
动手学深度学习12.3.自动并行-笔记练习(PyTorch)
以下内容为结合李沐老师的课程和教材补充的学习笔记,以及对课后练习的一些思考,自留回顾,也供同学之人交流参考。 本节课程地址:无 本节教材地址:12.3. 自动并行 — 动手学深度学习 2.0.0 documentation 本节开源代…...
第二十二天打卡
数据预处理 import pandas as pd from sklearn.model_selection import train_test_splitdef data_preprocessing(file_path):"""泰坦尼克号生存预测数据预处理函数参数:file_path: 原始数据文件路径返回:preprocessed_data: 预处理后的数据集""&quo…...
SET NX互斥功能的实现原理
Redis 的 SET key value NX 命令通过其原子性和底层数据结构的特性实现互斥功能,具体实现如下: 1. 互斥功能的实现原理 SET NX 的核心是 原子性操作:当且仅当键(key)不存在时,才会设置键的值。Redis 的单线…...
前端 CSS 样式书写与选择器 基础知识
1.CSS介绍 CSS是Cascading Style Sheet的缩写,中文意思为"层叠样式表",它是网页的装饰者,用来修饰各标签 排版(大小、边距、背景、位置等)、改变字体的样式(字体大小、字体颜色、对齐方式等)。 2.CSS书写位置 2.1 样式表特征 层…...
一小时学会Docker使用!
文章目录 前言一、安装ssh连接工具二、安装docker三、Docker常见命令四、docker-compose使用 前言 Docker: Docker简单来说就是简化环境配置的,我们配置环境只需要简单的docker pull,docker run即可,而删除环境也很容易ÿ…...
android studio开发aar插件,并用uniapp开发APP使用这个aar
android studio开发aar插件,并用uniapp开发APP使用这个aar 使用android studio打包aar和Unity导入aar详解...
操作系统实战——QEMU模拟器搭建【rCore 操作系统】
操作系统大作业——QEMU模拟器搭建rCore操作系统 按照本篇步骤走,帮你少走很多弯路!博主在自己做的过程中踩了很多坑,过程还是很痛苦的,走了很多弯路,现在都已经在文章中把坑填平了,把弯路修直了。 创作不易…...
web:InfiniteScroll 无限滚动
InfiniteScroll 无限滚动 分页加载 <div class"data-box" v-infinite-scroll"loadMore"> <li v-fori in dataList></li> </div>form: {current: 1,size: 10,}loadMore(){console.log(this.dataList.length, this.total ,8888)if…...
【Redis 进阶】哨兵模式
思维导图: 一、哨兵模式概述 (一)传统主从复制模式的局限性 在传统的Redis主从复制架构中,若主节点发生故障,运维人员需手动执行故障转移操作,将一个从节点提升为新主节点,并逐一通知所有客户…...
告别卡顿,图片查看界的“速度与激情”
嘿,小伙伴们!今天电脑天空给大家介绍一款超好用的图片查看神器——ImageGlass!这可不是普通的图片查看软件哦,它简直就是图片界的“全能王”。首先,它能打开的图片格式多到让你眼花缭乱,什么PNG、JPEG、GIF…...
02_线性模型(回归分类模型)
用于分类的线性模型 线性模型也广泛应用于分类问题,可以利用下面的公式进行预测: $ \widehat y w[0]*x[0]w[1]*x[1]…w[p]*x[p]b > 0$ 公式看起来与线性回归的公式非常相似,但没有返回特征的加权求和,而是为预测设置了阈值…...
力扣2094题解
记录: 2025.5.12 题目: 思路: 暴力遍历。 解题步骤: 1.统计数字出现次数:使用数组cnt来记录输入数组中每个数字的出现次数。 2.生成三位偶数:通过循环从100开始,每次递增2,生成…...
人物角色设定机制
模块一:角色塑造进阶技巧 将角色设定(Character Headcanon)提升至更高层次 当您通过Character Headcanon Generator生成基础设定后,可运用以下专业技巧深化角色塑造: 情感核心图谱分析法 解构角色情感驱动机制及其情境表现: 主…...