Sysmac Studio使用Tortoise和Git实现版本控制
Sysmac Studio使用Tortoise和Git实现版本控制
实验时间:2022/11/16
实验软件:Sysmac Studio(1.52,需要软件授权支持版本控制)、Git(2.38.1)、Tortoise(2.13.0)、gitee(代码仓库)
实验目的:Sysmac Studio实现版本控制、多人同时开发(需要有Git和tortoris使用基础)
实验内容
本次实验模拟的是两个开发人员同时开发一个项目的两个功能,最终合并到一起进行调试,调试完成后发布。Sysmac Studio除了程序部分,对于两个开发人员来说都是公共部分,比如配置和设置下面的所有项、功能、功能块、数据等。这些公共部分如果两个开发人员都在自己的项目中单独修改,这个在之后项目合并时会出现很多的冲突。为了解决这个问题给两个开发人员建一个公共的分支用于修改公共参数,然后将这些公共参数合并到自己的项目中。
分支策略
策略介绍:
第一步:首先由项目负责人创建本地仓库建立master分支、developer分支,在developer下建立common分支,再在Git创建远程仓库,并将本地仓库的每个分支推送到远程仓库;
第二步:由开发者1将远程仓库的developer分支克隆到本地仓库,然后建立dev1和common1分支,本地仓库的common1分支在修改之前需要先从远程仓库的common分支先拉取,再修改,修改之后合并到dev1分支,再推送远程仓库的common分支。这样可以放置不同开发者在使用共参数出现不同步的问题;开发者2同样的操作;
第三步:在开发者功能全部开发完毕后将项目合并到developer分支上;
第四步:developer建立release分支用于测试项目,在bug处理完之后将项目合并到master分支和developer分支;
第五步:如果项目在最终使用是出现bug,可以再master分支上创建临时分支hotfix用于修改bug,修改完之后将项目再合并到master分支和developer分支,然后删除hotfix分支即可;
分支功能:
master:主分支,用于最终版本的发布;
developer:开发分支,用于合并开发者的项目,通常由项目负责人管理;
dev1:开发者1分支,用于开发者开发自己负责的功能;
dev2:开发者2分支,用于开发者开发自己负责的功能;
common1:开发者1公共参数分支;
common2:开发者2公共参数分支;
common:公共参数分支,用于每个开发者修改公共参数(修改之前要先拉取),最后将这部分参数合并到自己的项目中;
hotfix:用于修正master中发现的bug,修正完推送至master和developer分支;
release:用于测试developer中的项目,修改测试中的bug,最终推送至master和developer分支
分支策略图:

Git和Tortorisean安装和设置
1. 安装Git和Tortorise
git下载网址:https://git-scm.com/
Tortoise下载网址:https://tortoisegit.org/
在安装git时需要注意如下选项:

2. Tortorise设置:


External Programm格式:(Sysmac Studio安装路径)\SysmacDiff.exe -gitdiff %base %mine %bpath%brev %yrev
案例演示
分支策略中的五步具体操作如下:
准备工作
1. 先在SysmacStudio中创建项目命名为test_project,然后在该项目中增加两个开发者所需要的程序,然后将程序调添加到任务:

2. 在VC目录下创建文件夹my_test文件夹,再在该文件夹下创建一个notice.txt文件(随便建个什么文件都行)用于master分支的首次提交:

3. 在Gitee新建远程仓库MyTest如下:

第一步
- 初始化本地仓库、提交、推送至远程仓库的master分支:





-
创建并切换到developer分支:




-
将之前创建my_project项目导入到developer分支,提交并推送至远程仓库的developer分支(推送方法同上):

-
在developer分支下创建common分支用于修改公共参数部分,将common分支推送远程仓库(新建分支和推送分支方法同上,往后的该步骤不再截图)
第二步
- 开发人员1 在自己电脑的VC目录下创建一个dev1文件夹,克隆远程仓库的developer分支到本地dev1文件夹下:

-
在developere分支下创建dev1和common1两个分支,切换到common1分支,先从远程仓库的common分支拉取>,确保各个开发人员公共参数是一致的,防止在合并时出现冲突:

-
,打开工程在EtherCat下增加一个伺服、新建一个轴、创建结构体、新建全局变量:



-
common1提交修改,推送到远程仓库的common分支;
-
切换到dev1分支将common1分支合并至dev1分支:
-
查看合并后的dev1开发分支:
-
开发人员1在dev1分支下写自己的程序:




-
开发人员1的功能完成后提交修改开发者2的操作同上。
第三步
-
开发者1切换到本地仓库的developer分支,先拉取远程仓库的developer分支,将本地仓库的developer分支和dev1分支合并,然后将本地仓库的developer分支推送到远程仓库的developer分支。到此开发人员1的所有工作就完成了。
-
开发者2切换到本地仓库的developer分支,先拉取远程仓库的developer分支,将本地仓库的developer分支和dev2分支合并,然后再将本地仓库的developer分支推送到远程仓库的developer分支。
第四步
测试人员拉取远程仓库的developer分支,创建release分支后切换到该分支开始测试,如果发现错误修改后与本地仓库的developer分支合并,再分别推送到远程仓库的developer分支和master分支。
第五步
项目交付后如果出现bug,先在master分支上建一个临时修复分支hotfix,修复完后合并到master分支,然后删除hotfix分支。
扩展
创建标签
# Tag和Branch的原理是差不多的
git tag -a 版本标签 -m '说明信息'
git push origin 版本标签
拉取远程仓库的master分支,打开git bash:

将tag推送到远程仓库:
远程仓库查看推送的tag:


合并冲突处理
如果两个分支在合并时同样的文件在同样位置内容是不一样的,这时会产生冲突,需要手动处理冲突(详细参考手册)。在合并时尽量避免这种情况的发生。


sysmac studio版本控制用户手册:点击打开
相关文章:
Sysmac Studio使用Tortoise和Git实现版本控制
Sysmac Studio使用Tortoise和Git实现版本控制实验时间:2022/11/16 实验软件:Sysmac Studio(1.52,需要软件授权支持版本控制)、Git(2.38.1)、Tortoise(2.13.0)、gitee(代码仓库) 实验目的:Sysmac Studio实现版本控制、多人同时开…...
Intent 和 Bundle 传值的区别
文章目录1、使用上1.1 Intent 方式1.2 Bundle 方式2、为什么 Bundle 使用 ArrayMap 而不是 Hashmap 实现呢?1、使用上 1.1 Intent 方式 举例:将数据从页面 A 传递到 B,然后再传递到 CA 页面: Intent intentnew Intent(MainActi…...
TypeScript 初步
一、TypeScript是什么? Typed JavaScript at Any Scale: 添加了类型系统的JavaScript,使用于任何规模的项目。 两个重要特点: 类型系统 任何规模 中文官网:文档简介 TypeScript中文网 TypeScript——JavaScript的超集 TypeS…...
leaflet 添加zoomslider,控制zoom放大缩小(074)
第074个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中使用zoomslider,相比于普通的zoom控件,这个更加形象,更加具体些。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共65行)相关API参考:专栏目…...
10分钟学会python对接【OpenAI API篇】
今天学习 OpenAI API,你将能够访问 OpenAI 的强大模型,例如用于自然语言的 GPT-3、用于将自然语言翻译为代码的 Codex 以及用于创建和编辑原始图像的 DALL-E。 首先获取生成 API 密钥 在我们开始使用 OpenAI API 之前,我们需要登录我们的 Op…...
2023美赛必须注意事项
文章目录首页部分要求竞赛期间题目查看题目下载论文要求比赛提示控制号提交解决方案更多注意事项首页部分要求 具体如下: 我提取一些关键词如下: 第一页:摘要页字体要求:12点的 Times New Roman 字体请勿在此页面或任何页面上…...
基于微信小程序的智能招聘小程序
文末联系获取源码 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏览器…...
Java文件操作和I/O
Java 流(Stream)、文件(File)和IOJava.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。一个流可以理解为一个数据的序列。输入流表示从一个源…...
QT项目_RPC(进程间通讯)
QT项目_RPC(进程间通讯) 前言: 两个进程间通信、或是说两个应用程序之间通讯。实际情况是在QT开发的一个项目中,里面包含两个子程序,子程序有单独的界面和应用逻辑,这两个子程序跑起来之后需要一些数据的交互,例如&…...
移动硬盘文件丢失怎么恢复?
在我们的日常工作、学习和生活都离不开各种数据。每天都会接收或处理各种数据,尤其是做设计、自媒体、多媒体设计的人。移动硬盘成为我们常备的存储工具,但有使用就会伴随着意外情况的发生,这将导致移动硬盘上数据的丢失,比如误删…...
什么是同步整流和异步整流
在设计降压型DCDC电路的时候,经常会听到同步整流(synchronous)和异步整流(asynchronous)。那么什么是同步整流,什么是异步整流呢从这两种电路的拓扑来看,异步整流型外围有一个续流二极管&#x…...
关于PYTHON Enclosing 的一个小问题
问题分析 以下是一段每隔半小时重复执行测试用例的脚本,func是传入的测试函数,在执行func前后,会打印操作次数 def repeat(func, action):try:log.info(u******开始并发%s****** % action)thread_list []for i in range(repeat_count):def…...
LabVIEW错误-2147220623:最大内存块属性不存在
LabVIEW错误-2147220623:最大内存块属性不存在在使用NI Linux实时操作系统目标中,使用系统属性节点和分布式系统管理器(DSM),但遇到一些问题:它未正确报告系统上的可用物理内存量。在NI Linux实时系统上出现…...
图的总复习
一、图的定义Graph 图是由顶点vertex集合及顶点间关系集合组成的一种数据结构: 顶点的集合 和 边的集合 二、无向图 用(x,y)表示两个顶点x和y之间的一条边(edge) 边是无方向的 N{V,E},V{0…...
测试流程记录
1,需求评审 2,技术方案评审 3,编写测试用例 编写需求分析 编写测试用例 编写冒烟case 4,用例评审 5,提测 提测前给开发执行冒烟case 6,测试 测试完成前约产品验收时间 7,验收 跟进验收问题…...
Mysql主从架构与实例
mysql的主从架构 MySQL主从架构是一种常见的数据库高可用性解决方案,它通常由一个主数据库和多个从数据库组成。主数据库用于处理写入请求和读取请求,从数据库则用于处理只读请求。 在主从架构中,主数据库记录所有数据更改并将这些更改同步…...
webpack(高级)--Tapable
webpack 我们直到webpack中有两个非常重要的类Compiler和Compilation 他们通过注入插件的方式 来监听webpack的所有声明周期 插件的注入是通过创建Tapable库中的各种Hook的实例来得到 Tapable Tapable中的Hook分为同步与异步 同步 SyncHook SyncBailHook SyncWaterfallHook…...
Python常见类型转换合集
近期在工作中常常接触到各种转换,如字符串转byte,byte转字符串,还有byte数组转成报文能接纳的格式(bin格式的十六进制)。故有必要系统的总结一下Python中常见的类型转换。 一:常见类型的概念 类型举例说明…...
知识点(1)
什么是跨域请求? 当前发起请求的域与该请求指向的资源所在的域不一样,凡是发送请求的url的协议、域名、端口号三者之间任意一者与当前页面地址不同的请求。这里的域指的是:我们认为若协议域名端口号均相同,那么就是同域。 get和…...
Tomcat源码分析-启动分析(三) Catalina启动
在上一篇文章中,我们分析了tomcat的初始化过程,是由Bootstrap反射调用Catalina的load方法完成tomcat的初始化,包括server.xml的解析、实例化各大组件、初始化组件等逻辑。那么tomcat又是如何启动webapp应用,又是如何加载应用程序的…...
怎么看待OpenClaw?
特别附:"词元"为何是理解这一切的关键引言:一只龙虾爬到Linux头顶2026年3月,GitHub星标榜上出现了一个奇观——一只"龙虾"爬到了Linux头顶。OpenClaw,这个从个人项目演变成的AI智能体框架,在不到四…...
3步终结告警疲劳:Keep平台的智能告警管理实践
3步终结告警疲劳:Keep平台的智能告警管理实践 【免费下载链接】keep The open-source alerts management and automation platform 项目地址: https://gitcode.com/GitHub_Trending/kee/keep 智能告警管理已成为现代运维体系的核心能力。根据Gartner最新报告…...
Phi-4-Reasoning-Vision简单调用:Python API封装与REST接口调用示例
Phi-4-Reasoning-Vision简单调用:Python API封装与REST接口调用示例 1. 项目概述 Phi-4-Reasoning-Vision是基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具,专为双卡4090环境优化。该工具严格遵循官方SYSTEM PROMPT规范…...
BilibiliDown终极实战指南:解锁B站视频批量下载的完整方案
BilibiliDown终极实战指南:解锁B站视频批量下载的完整方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirro…...
3款工业调试开源工具让Modbus通讯诊断效率提升80%
3款工业调试开源工具让Modbus通讯诊断效率提升80% 【免费下载链接】OpenModScan Open ModScan is a Free Modbus Master (Client) Utility 项目地址: https://gitcode.com/gh_mirrors/op/OpenModScan 在工业自动化领域,Modbus协议作为设备间通讯的"通用…...
英飞凌Aurix2G TC3XX 中断路由与DMA联动实战解析
1. 中断与DMA联动的核心价值 第一次接触英飞凌Aurix2G TC3XX的中断路由功能时,我像发现新大陆一样兴奋。传统嵌入式开发中,ADC采样完成→CPU读取数据→存入内存的流程就像用勺子一勺一勺地运水,而中断触发DMA的机制则像接上了自来水管——数据…...
DecepGPT Schema-Driven Deception Detection with Multicultural Datasets and Robust Multimodal Learnin
DecepGPT: Schema-Driven Deception Detection with Multicultural Datasets and Robust Multimodal Learning Authors: Jiajian Huang, Dongliang Zhu, Zitong YU, Hui Ma, Jiayu Zhang, Chunmei Zhu, Xiaochun Cao Deep-Dive Summary: DeepGPT: 基于模式驱动的多文化数据集…...
CF1335E2 Three Blocks Palindrome (hard version)
本题解也可通过CF1335E1 Three Blocks Palindrome (easy version)。做法:值域很小。只有200,考虑从这里入手。我们设q[i][j]表示数i第j次出现的位置,sum[i][j]表示种类i在1到j范围内出现过多少次。枚举 a,b 具体的值,枚举 x&#…...
OpenClaw v2026.3.24-beta.1 深度技术分析报告:体验、生态与协作的“精装修”
报告版本: 1.1分析基准: v2026.3.23 (稳定化修复版本) -> v2026.3.24-beta.1 (预发布版)核心论点: 在经历了v2026.3.22的“架构大换血”与v2026.3.23的“系统性修复”之后,v2026.3.24-beta.1标志着OpenClaw的迭代节奏进入了一个…...
GPEN图像修复新手入门:界面介绍与功能详解
GPEN图像修复新手入门:界面介绍与功能详解 1. 认识GPEN图像修复工具 你是否遇到过这样的情况:翻出老照片想分享给亲友,却发现照片已经泛黄、模糊甚至出现划痕?GPEN图像修复工具就是为解决这些问题而生的专业解决方案。这个由科哥…...
