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了,但是在你操作的这个间隙,有其他人提交了一个其他文件的修改,你的本地就比服务器有一个文件旧了。
  • 否则就需要先把你这个要提交的新文件
  1. 先stash, 暂存到其他地方
  2. 然后pull,更新本地和服务器一样新
  3. 然后再 把stash的内容pop回来
  4. 再进行commit
  5. 再进行 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 fetchgit 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/40452986icon-default.png?t=O83Ahttps://zhuanlan.zhihu.com/p/40452986

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

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

相关文章

2024 年博客总结

2024年 我做了个Hexo博客 &#xff0c;博客地址为&#xff1a;https://blog.mybatis.io。 2024 年发布的文章 一共发布了 31 篇博客&#xff0c;平均一个月 2.6 篇。 Ollama 导入自定义模型 阅读数/评论数: 7433/5Spring AI 使用本地 Ollama Embeddings 阅读数/评论数: 5311…

Python中PDF转Word的技术

Python PDF转Word技术概述 在日常办公和数据处理中&#xff0c;经常需要将PDF文档转换为Word文档&#xff0c;以便进行编辑、修改或格式调整。Python作为一种强大的编程语言&#xff0c;提供了多种库和工具来实现这一功能。以下是对Python中PDF转Word技术的详细介绍。 一、技…

vue3+ts+element-plus 表单el-form取消回车默认提交

问题描述&#xff1a;在表单el-form中的el-input中按回车后&#xff0c;页面会刷新&#xff0c;url也会改变&#xff0c; 回车前&#xff1a; 回车后&#xff1a; 相关代码&#xff1a; 解决方法1&#xff1a;在 el-form 上阻止默认的 submit 事件&#xff0c;增加 submit.pre…

【数据结构05】排序

系列文章目录 【数据结构05】排序 . 【算法思想04】二分查找 文章目录 系列文章目录[toc] 1. 基本思想与实现1.1 插入类排序1.1.1 直接插入排序&#xff08;*&#xff09;1.1.2 折半插入排序1.1.3 希尔排序&#xff08;*&#xff09; 1.2 交换类排序1.2.1 冒泡排序&#xff08…

QT----------文件系统操作和文件读写

一、输入输出设备类 功能&#xff1a; Qt 提供了一系列的输入输出设备类&#xff0c;用于处理不同类型的 I/O 操作&#xff0c;如文件、网络等。 二、文件读写操作类 QFile 类&#xff1a; 提供了对文件的读写操作&#xff0c;可以打开、读取、写入和关闭文件。示例&#x…

Qt自定义步骤引导按钮

1. 步骤引导按钮 实际在开发项目过程中&#xff0c;由一些流程比较繁琐&#xff0c;为了给客户更好的交互体验&#xff0c;往往需要使用step1->step2这种引导对话框或者引导按钮来引导用户一步步进行设置&#xff1b;话不多说&#xff0c;先上效果 2. 实现原理 实现起来…

《Java核心技术II》流中的filter、map和flatMap方法

filter、map和flatMap方法 filter filter通过转换产生过滤后的新流,将字符串流转化为只包含长单词的另一个流。 List words ...; Stream longWords words.stream().filter(w->w.length()>12) filter类型是Predicate(谓词&#xff0c;表示动作)类型对象&#xff0c…

Junit4单元测试快速上手

文章目录 POM依赖引入业务层测试代码Web层测试代码生成测试类文件 在工作中我用的最多的单元测试框架是Junit4。通常在写DAO、Service、Web层代码的时候都会进行单元测试&#xff0c;方便后续编码&#xff0c;前端甩锅。 POM依赖引入 <dependency><groupId>org.spr…

FPGA自学之路:到底有多崎岖?

FPGA&#xff0c;即现场可编程门阵列&#xff0c;被誉为硬件世界的“瑞士军刀”&#xff0c;其灵活性和可编程性让无数开发者为之倾倒。但谈及FPGA的学习难度&#xff0c;不少人望而却步。那么&#xff0c;FPGA自学之路到底有多崎岖呢&#xff1f; 几座大山那么高&#xff1f;…

【Leecode】Leecode刷题之路第97天之交错字符串

题目出处 97-交错字符串-题目出处 题目描述 个人解法 思路&#xff1a; todo代码示例&#xff1a;&#xff08;Java&#xff09; todo复杂度分析 todo官方解法 97-交错字符串-官方解法 方法1&#xff1a;动态规划 思路&#xff1a; class Solution {public boolean isInte…

【微服务】【Sentinel】认识Sentinel

文章目录 1. 雪崩问题2. 解决方案3. 服务保护技术对比4. 安装 Sentinel4.1 启动控制台4.2 客户端接入控制台 参考资料: 1. 雪崩问题 微服务调用链路中的某个服务故障&#xff0c;引起整个链路中的所有微服务都不可用&#xff0c;这就是雪崩。动图演示&#xff1a; 在微服务系统…

使用 Three.js 创建几何体粒子效果

今天,带大家一起看下如何将几何体由粒子组成的效果。 通常情况下&#xff0c;Three.js 中的几何体材质会为每个面赋予一种颜色&#xff0c;这样的结果比较常见&#xff0c;如下图所示&#xff1a; 然而&#xff0c;通过将几何体由粒子组成&#xff0c;我们可以实现更加酷炫和…

shell指令

终端输入一个C源文件名&#xff08;.c结尾&#xff09;判断文件是否有内容&#xff0c;如果没有内容删除文件&#xff0c;如果有内容编译并执行改文件。 终端输入两个文件名&#xff0c;判断那个时间戳更新

使用ONVIF操纵大华摄像头

使用1台大华网络相机&#xff0c;DH-IPC-HFW3237M-I2&#xff0c;6毫米镜头&#xff0c;2百万像素&#xff0c;但是网口是百兆的。 大华的SDK感觉好难用。 写完了data matrix识别的0.1版本后&#xff0c;进行相机部分改进。 老规矩&#xff0c;先用python快速原型。 会出现一个…

Pandas-数据分组

文章目录 一. 分组聚合1. 分组聚合过程2. Pandas,Numpy内置的聚合方法3. 聚合函数① 使用Numpy库的mean函数② 自定义函数Ⅰ. 一个参数Ⅱ. 多个参数 ③ agg和 aggregateⅠ. 传入一个函数Ⅱ. 同时传入多个函数Ⅲ. 向agg/aggregate中传入字典 二. 分组转换1. 使用transform分组计…

云计算课程报告实验-WordCount算法实验 过程记录

内容描述 本实验指导书通过在华为鲲鹏上&#xff0c;编译运行WordCount程序。完成实验操作后&#xff0c;读者会掌握简单的程序编写&#xff0c;如WordCount中的getWords、countWords、treeMerge。 实验环境 华为鲲鹏云主机、openEuler 20.03操作系统&#xff1b;安装mpich-3…

【paddle】初次尝试

张量 张量是 paddlepaddle&#xff0c; torch&#xff0c; tensorflow 等 python 主流机器学习包中唯一通货变量&#xff0c;因此应当了解其基本的功能。 张量 paddle.Tensor 与 numpy.array 的转化 import paddle as paddle import matplotlib.pyplot as plt apaddle.to_t…

Frontend - 分页(针对 python / Django )

目录 一、同个文件内&#xff08;方式一&#xff09; 1. 前端 html 2. 定义分页界面 3. 获取分页数据 4.后端根据前端分页需求&#xff0c;整理分页数据 5.显示情况 6. JsonResponse 相关知识 二、不同文件内依旧有效&#xff08;方式二&#xff0c;更优化&#xff09;…

骑行解压:身心的奇妙之旅,VELO Angel Revo坐垫

在快节奏的都市生活中&#xff0c;骑行不仅是一种健康的生活方式&#xff0c;更是一种心灵的释放。从心理生理学的角度来看&#xff0c;骑行能够促使身体分泌内啡肽&#xff0c;带来愉悦感&#xff0c;同时&#xff0c;它还能转移注意力&#xff0c;缓解焦虑。在这场身心的奇妙…

HarmonyOS NEXT 实战之元服务:静态案例效果---教育培训服务

背景&#xff1a; 前几篇学习了元服务&#xff0c;后面几期就让我们开发简单的元服务吧&#xff0c;里面丰富的内容大家自己加&#xff0c;本期案例 仅供参考 先上本期效果图 &#xff0c;里面图片自行替换 效果图1完整代码案例如下&#xff1a; import { authentication } …