unity学习4:git和SVN的使用差别
目录
1 svn
1.1 操作逻辑
1.2 对应工具
1.3 SVN避免冲突的好习惯
2 git
2.1 git的基础操作逻辑
2.1.1 commit时,提交文件之外的其他文件需要pull
2.1.2 commit时,发现要提交的本地文件和服务器的文件冲突了
2.1.3 pull 时
2.2 对应工具
2.3 git的好习惯?
3 例子1:处理本地要提交的文件和服务器文件冲突
3.1 例子
3.2 错误方法:遇到冲突,直接丢弃的办法,不能彻底解决问题
3.3 如何解决git 的合并冲突 (正确方法)
4 git命令的学习
4.1 初始化 Git 仓库 git init
4.2 检查当前状态git status
4.3 添加更改到暂存区 git add .
4.4 提交更改 git commit
4.5 查看提交历史 git log
4.6 推送到远程仓库 git push
4.6.1 添加远程仓库
4.6.2 git push
4.7 获取最新更改 git pull
4.8 合并冲突
4.9 查看当前分支:git branch
4.10 创建新分支:git checkout -b <新分支名>
4.11 切换分支:git checkout <分支名>
4.12 删除本地分支:git branch -d <分支名>
4.13 克隆远程仓库:git clone <远程仓库地址>
5 阅读报错和处理
1 svn
1.1 操作逻辑
- 1 不要求项目内所有文件全部相同
- 2 只要求同1个文件,先取得最新版本后才能修改这个文件
- 3 为了防止冲突,SVN还可以对每个文件加lock,避免出现2个人同时修改1个文件冲突的情况。
1.2 对应工具
- 一般svn使用 tortoise
1.3 SVN避免冲突的好习惯
- 文件先在SVN里加锁lock功能,需要设置
- 先 更新要提交的文件
- 然后使用前先解锁
- 再进行 commit等操作
2 git
2.1 git的基础操作逻辑
2.1.1 commit时,提交文件之外的其他文件需要pull
针对1个分支,git要求整体更新,也就是进行操作前,必须和服务器上的分支版本全部一模一样了才能进行后面的操作
- 提交前,必须保证除了你要修改得这个文件比服务器上的新,其他文件得全部相同。也就是所有项目工程内的文件都必须和服务器一样新,不能比服务器上旧。
- 比如虽然之前已经pull了,但是在你操作的这个间隙,有其他人提交了一个其他文件的修改,你的本地就比服务器有一个文件旧了。
- 否则就需要先把你这个要提交的新文件
- 先stash, 暂存到其他地方
- 然后pull,更新本地和服务器一样新
- 然后再 把stash的内容pop回来
- 再进行commit
- 再进行 push
(适用于文本文件,非二进制的文件)
- 1先将本地修改存储起来
- $ git stash
- 这样本地的所有修改就都被暂时存储起来 。
- 2 用git stash list可以看到保存的信息。
- 其中stash@{0}就是刚才保存的标记。
- 3暂存了本地修改之后,就可以pull了
- $ git pull
- 4 还原暂存的内容
- $ git stash pop stash@{0}
2.1.2 commit时,发现要提交的本地文件和服务器的文件冲突了
需要进行冲突解决
step1: 选择要留下那个版本
- 保留本地文件 git checkout --ours Data/configs.xlsx
- 选择保留远程文件:git checkout --theirs Data/configs.xlsx (一般选择这个)
step2 标记冲突已解决
- 确认你已经选择了正确的文件后,添加文件到暂存区:
- git add Data/configs.xlsx
step3: 完成合并
- 提交解决后的更改:
- git commit -m "Resolved merge conflict in Data/configs.xlsx"
step4: 同步代码
- 最后,将代码推送到远程仓库:git push
2.1.3 pull 时
- 如果你想进行拉取,git pull
- 服务器上有内容比你本地新
- if 你本地什么修改也没有,OK
- if 你本地有其他比服务器新的内容,就会报错, 怎么处理呢?
- 如果你本地有一些修改了,要么丢弃,要么先提交,总之得先保证和分支得服务器全部内容一模一样
- 那如果我不pull,直接commit是不是就行了?
- 也不行,这就是回到 2.1.1 会让你先stash ,再pull, 再提交
2.2 对应工具
- 一般git使用 sourcetree
- git也可以使用 tortoise
- 还可以用 git bash
2.3 git的好习惯?
以下来自于百度AI
- 如果 Data/configs.xlsx 经常发生冲突,可以考虑以下方法:
- 避免多人编辑同一二进制文件。
- 使用文件锁定机制(比如 Git LFS 提供的锁定功能)。
- 将二进制文件存储在外部(如共享网盘或其他存储服务),而不是直接放在 Git 中。
3 例子1:处理本地要提交的文件和服务器文件冲突
3.1 例子
- 别人修改了A文件,已经上传
- 你也修改了A文件,准备上传。但是和服务器上的别人改的A文件内容不同。
- 服务器的文件和本地要提交的文件冲突了
3.2 错误方法:遇到冲突,直接丢弃的办法,不能彻底解决问题
- 比如,遇到冲突
- git merge --abort
- git reset --merge
- git status
- git status 可以查看现在的这个分支的的状态,是否有提交冲突等
- 前说有冲突,我把我本地放弃了,也能pull了。但是还是说有警告:因为冲突需要解决,不能删了了事,等你git pull的时候,还会报错
3.3 如何解决git 的合并冲突 (正确方法)
- 你的问题是合并冲突,特别是二进制文件 Data/configs.xlsx 出现冲突,Git 无法自动合并。
- 二进制文件(比如 Excel 文件)无法像文本文件一样进行合并,需要手动解决冲突。
- 以下是解决方法:
step1: 使用 git status 查看冲突的文件时哪些,git diff 看冲突的具体内容
- 检查冲突:运行 git status 查看哪些文件处于冲突状态。
- 查看冲突详情:使用 git diff 查看具体的冲突内容。
step2: 选择要留下那个版本
- 保留本地文件 git checkout --ours Data/configs.xlsx
- 选择保留远程文件:git checkout --theirs Data/configs.xlsx (一般选择这个)
step3 标记冲突已解决
- 标记冲突为已解决:对于每个已解决的冲突文件,运行
git add <文件名>
将其标记为已解决。 - 确认你已经选择了正确的文件后,添加文件到暂存区:
- git add Data/configs.xlsx
step4: 完成合并
- 提交解决后的更改:
- git commit -m "Resolved merge conflict in Data/configs.xlsx"
step5: 同步代码
- 最后,将代码推送到远程仓库:git push
伪代码流程:
git status # 查看冲突文件
git diff --name-only --diff-filter=U | xargs code & # 使用code编辑器打开所有未解决的冲突文件
# 手动解决冲突...
git add . # 添加所有解决后的文件
git commit # 提交更改
4 git命令的学习
4.1 初始化 Git 仓库 git init
- 如果你的项目尚未初始化为 Git 仓库,可以使用以下命令:
- 此命令将在当前目录创建一个新的 Git 仓库。
4.2 检查当前状态git status
- 在任何操作前,建议检查当前工作区和暂存区的状态:
- 此命令会显示哪些文件已更改、哪些文件未被跟踪,以及哪些文件已准备提交。
4.3 添加更改到暂存区 git add .
- 添加单个文件: git add <文件名>
- 添加所有更改的文件:git add .
- 提示:git add . 会将当前目录及其子目录中所有更改过或新增的文件添加到暂存区。
4.4 提交更改 git commit
- 使用以下命令提交已暂存的更改到本地仓库:
- git commit -m "<提交信息>"
- -m: 提交时添加的简短描述。
- 提交信息应简洁明了,通常描述本次更改的内容
4.5 查看提交历史 git log
- 使用以下命令查看仓库的提交记录:git log
- 如果想简化显示,可以使用:git log --oneline
4.6 推送到远程仓库 git push
4.6.1 添加远程仓库
- 如果尚未设置远程仓库,可以使用以下命令:git remote add origin <远程仓库地址>
- 例如:git remote add origin https://github.com/username/repository.git
- 推送更改
4.6.2 git push
- 将本地提交推送到远程仓库:git push origin <分支名>
- 例如,推送到主分支:git push origin main
4.7 获取最新更改 git pull
- 在多人协作的情况下,先拉取远程仓库的最新更改:
- git pull origin <分支名>
git pull
实质上是git fetch
和git merge FETCH_HEAD
的组合,它会获取(fetch)远程仓库中所有分支的更新并与你的本地分支进行合并(merge)。
4.8 合并冲突
- 如果在拉取或合并代码时发生冲突,Git 会提示需要手动解决冲突。步骤如下:
- 编辑冲突文件,解决冲突标记(<<<<<<<, =======, >>>>>>>)。
- 将解决后的文件添加到暂存区:git add <冲突文件>
- 提交解决冲突后的代码:git commit -m "Resolve merge conflict"
4.9 查看当前分支:git branch
4.10 创建新分支:git checkout -b <新分支名>
4.11 切换分支:git checkout <分支名>
4.12 删除本地分支:git branch -d <分支名>
4.13 克隆远程仓库:git clone <远程仓库地址>
5 阅读报错和处理(待完善)
https://zhuanlan.zhihu.com/p/40452986https://zhuanlan.zhihu.com/p/40452986
相关文章:

unity学习4:git和SVN的使用差别
目录 1 svn 1.1 操作逻辑 1.2 对应工具 1.3 SVN避免冲突的好习惯 2 git 2.1 git的基础操作逻辑 2.1.1 commit时,提交文件之外的其他文件需要pull 2.1.2 commit时,发现要提交的本地文件和服务器的文件冲突了 2.1.3 pull 时 2.2 对应工具 2.3 …...

四大自平衡树对比:AVL树、红黑树、B树与B+树
AVL树、红黑树、B树和B树的对比与应用场景 树系列相关文章(置顶) 1、从链表到平衡树:二叉查找树的退化与优化 2、自平衡二叉查找树:如何让二叉查找树始终保持高效 3、AVL树入门:理解自平衡二叉查找树的基础 4、红黑树全…...

BUUCTF Pwn ciscn_2019_es_2 WP
1.下载 checksec 用IDA32打开 定位main函数 发现了个假的后门函数: 看看vul函数: 使用read读取 想到栈溢出 但是只有48个 只能覆盖EBP和返回地址 长度不够构造 所以使用栈迁移: 栈迁移需要用到leave ret 使用ROPgadget找地址: …...
MongoDb-mongosh-登录
本地登录 mongosh --username root --password xxx 参考:Connect to a Deployment - MongoDB Shell...

C语言day3:shell脚本
一、作业题3 使用数组求出当前目录下.sh文件的个数 二、作业题4 使用数组求家目录下文件的个数 三、思维导图...

微信小程序Uniapp
使用命令行创建项目(vuets) npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project然后用HBX打开项目 再安装依赖 npm i 再运行开发版本,生成dist目录 pnpm dev:mp-weixin 注意要设置APPid 再用微信小程序打开...
mongoTemplate的复杂组装条件查询
mongoTemplate不像SQL那么灵活,组装条件较为复杂。 如下演示了查询类似于 AND name ‘张三’ OR age 12 NOT birthday > 2024-12-31 这类结构的代码示例。 脑子里的范围图: 所有的AND锁定一个范围,再跟所有的OR组成的范围取并集&#…...
httpslocalhostindex 配置的nginx,一刷新就报404了
当你的Nginx配置导致页面刷新时报404错误时,通常是由于以下几个原因造成的: 静态文件路径配置错误:Nginx没有正确地指向静态文件的目录。前端路由问题:如果是SPA(单页应用),刷新页面时Nginx没有…...
pandas删除值全部为0的整行和整列,还有0.0,0.000000也要删除
在 Pandas 中,如果需要删除全部为 0 的行或列,可以通过 .all() 方法来判断行或列是否所有元素都为 0,然后删除这些行或列。 代码示例 示例数据: import pandas as pd# 示例数据 data {A: [0, 2, 0, 4],B: [0, 0, 0, 0],C: [0, …...

IO Virtualization with Virtio.part 1 [十二]
久等了各位! 本篇开始讲解 IO 虚拟化中的 virtio,我会以 Linux 的 IIC 驱动为例,从 IIC 驱动的非虚拟化实现,到 IIC 驱动的半虚拟化实现,再到最后 X-Hyper 中如何通过 virtio 来实现前后端联系,一步步把 v…...
ShardingSphere-Proxy分表场景:go测试案例
接续上篇文章《ShardingSphere-Proxy分表场景测试案例》 go测试用例: package mainimport ("fmt""math/rand""time""github.com/bwmarrin/snowflake""gorm.io/driver/mysql""gorm.io/gorm""gor…...

OpenStack系列第四篇:云平台基础功能与操作(Dashboard)
文章目录 1. 镜像(Image)添加镜像查看镜像删除镜像 2. 卷(Volume)创建卷查看卷删除卷 3. 网络(虚拟网络)创建网络查看网络删除网络 4. 实例类型创建实例类型查看实例类型删除实例类型 4. 密钥对(…...

ESP32 I2S音频总线学习笔记(一):初识I2S通信与配置基础
文章目录 简介为什么需要I2S?关于音频信号采样率分辨率音频声道 怎样使用I2S传输音频?位时钟BCLK字时钟WS串行数据SD I2S传输模型I2S通信格式I2S格式左对齐格式右对齐格式 i2s基本配置i2s 底层API加载I2S驱动设置I2S使用的引脚I2S读取数据I2S发送数据卸载…...
25上半年软考高级系统分析师易混淆知识点
第1章 系统工程与信息系统基础 易混淆点1:系统工程生命周期与信息系统的生命周期 1、系统工程生命周期阶段 探索性研究→概念阶段→开发阶段→生产阶段→使用阶段→保障阶段→退役阶段 2、信息系统的生命周期 产生阶段→开发阶段(单个系统开发&…...
采集JSON解析错误的修复
两段采集来的JSON格式: 一: {"hwgOnlineId":"554312", "jiwuChatId":"", "phoneCategoryId":"20006", "cuxiaoSeq":{voucherTitle:1,lh 二: {"pic":&q…...
Java中实现对象的深拷贝(Deep Copy)
在Java中实现对象的深拷贝(Deep Copy)意味着创建一个对象的副本,使得原对象和副本对象完全分离,对副本对象的任何修改都不会影响到原对象。以下是几种实现深拷贝的方法: 1. 手动实现深拷贝 对于自定义类,…...

位置编码-APE
Transformer 中的绝对位置编码 (以下由gpt 生成) Transformer 的绝对位置编码(Absolute Position Encoding, APE)是用于对序列数据中的位置信息进行建模的一种方法。在 Transformer 的架构中,输入数据(如句…...
MySQL有哪些锁?
1.MySQL有哪些锁? 全局锁表级锁 表锁元数据锁意向锁 行级锁 记录锁间隙锁临键锁临时意向锁 我了解的是MySQL的锁可以分为全局锁、表级锁、行级锁。 我比较熟悉的是表级锁和行级锁,如果我们对表结构进行修改时,MySQL就会对这个表结构加一个…...

Everything实现,快速搜索文件
最近编写NTFS文件实时搜索工具, 类似 Everything 这样, 翻阅了很多博客, 结果大致如下: 1.分析比较肤浅, 采用USN日志枚举来获取文件记录 速度一言难尽, 因为日志枚举的是全盘所有文件的所有日志, 记录比文件记录还多, 速度当然很慢, 还有的甚至于是 使用 DeviceIoControl 函数…...

[硬件] DELL BIOS 相关注意事项
前言 前段时间重装系统. DELL BIOS属实资料少, 又难用. 这里给出相关的注意事项, 并且配上图片. BIOS相关注意事项 进入BIOS ESC/F2/ F12. 都可以进入BIOS, 当进U盘的入Win PE系统时, 使用F12 效果更佳. 关闭安全模式 切换到Boot Configuration选项,将Secure Boot选项off选…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇
根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...

Redis上篇--知识点总结
Redis上篇–解析 本文大部分知识整理自网上,在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库,Redis 的键值对中的 key 就是字符串对象,而 val…...

ubuntu中安装conda的后遗症
缘由: 在编译rk3588的sdk时,遇到编译buildroot失败,提示如下: 提示缺失expect,但是实测相关工具是在的,如下显示: 然后查找借助各个ai工具,重新安装相关的工具,依然无解。 解决&am…...

RushDB开源程序 是现代应用程序和 AI 的即时数据库。建立在 Neo4j 之上
一、软件介绍 文末提供程序和源码下载 RushDB 改变了您处理图形数据的方式 — 不需要 Schema,不需要复杂的查询,只需推送数据即可。 二、Key Features ✨ 主要特点 Instant Setup: Be productive in seconds, not days 即时设置 :在几秒钟…...
精益数据分析(98/126):电商转化率优化与网站性能的底层逻辑
精益数据分析(98/126):电商转化率优化与网站性能的底层逻辑 在电子商务领域,转化率与网站性能是决定商业成败的核心指标。今天,我们将深入解析不同类型电商平台的转化率基准,探讨页面加载速度对用户行为的…...
AWS vs 阿里云:功能、服务与性能对比指南
在云计算领域,Amazon Web Services (AWS) 和阿里云 (Alibaba Cloud) 是全球领先的提供商,各自在功能范围、服务生态系统、性能表现和适用场景上具有独特优势。基于提供的引用[1]-[5],我将从功能、服务和性能三个方面进行结构化对比分析&#…...