点击上方蓝字关注我哦~

你现在的Keil工程的版本控制是怎么管理的?可能有些人的做法是发布一个版本软件后将代码打一个包保存起来,作为此版本的备份。有一种常见的情况,当开始一项新功能的开发,并且最终的效果不理想老板要求回退回去。又恰巧在开发前没有打个包保存一下初始版本,那就需要一处一处回改,这样手工回退后的版本可靠性就下降许多,需要完整的测试才行。为了避免这种尴尬的情况,有必要在keil工程也引入版本控制工具。

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds (Linux发明者)为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。这个诞生于2005年并且至今都使得开发者赞不绝口的工具,实际上Linus仅开发了两周并在一个月内就上线用于管理庞大的Linux内核了,不得不赞叹天才的伟大和凡人的不可企及。

时至今日,Git早已在Android开发、Linux开发、web开发等场景成为最通行的版本管理工具,另外一些IDE集成开发环境也加入了Git,例如Android Studio, Intellij IDEA等。嵌入式开发常用的Keil也在keil5.15后也已经集成了版本管理工具,但是本文仍然是就Windows版Git管理Keil工程的示例,方便老版本的keil项目建立git管理。Keil5内集成的git的使用方法有机会再整理出来。

Git的实用性也逐渐带来了git托管平台的流行,如GitHub、GitLab、Bitbucket、Codeing.net、Gitee等。无数崇尚软件开源的开发者挥洒着汗水在这些平台上贡献了数以亿计的开源项目,使得咱们这些普通人可也以参与其中,接触到最前沿的技术、最酷炫的功能。身为一个开发者也要学会在开源代码上汲取这些全球精英所奉献的新知识新技能。

关于Git的使用方法,可以参考廖雪峰的git教程,深入浅出非常实用。在这篇文章中主要讲的是将一个既有的Keil工程加入git管理的方法。

01

安装windows版git

可以去官网下载windows版本的git, https://git-scm.com/downloads

安装完成后,在开始菜单内找到Git Bash并启动。启动后的操作窗口类似于windows的cmd窗口。在bash窗口内可以执行Linux的一些shell指令。

安装完成后,还需要设置邮箱地址和用户名,在命令行输入:

$ git config --global user.name "Your Name"$ git config --global user.email "email@example.com"

因为Git是分布式版本控制系统,可以多人在一起开发。所以每次提交,每次上传,都会带有你这台电脑的标记——邮箱地址和用户名。

02

本地建立git库

以/D/PROJ/project的一个keil工程为例。

1.进入工程所在的目录,使用ls指令查看是否正确的进入了目录。

xxxx@DESKTOP-TH28NBD MINGW64 /$ cd /D/PROJ/project/ xxxx@DESKTOP-TH28NBD MINGW64 /D/PROJ/project (master)$ lsinc/  Libraries/  README.en.md  README.md  RVMDK/  src/

2、初始化本地git仓库

git init

在project的目录下可以看到.git的目录,该目录包含让 git 能够正常工作所需的所有信息。

03

远程代码托管平台

Github和Gitlab是最流行的托管平台,由于众所周知的原因,这些国外的网站在国内的访问速度很不理想,国内使用推荐gitee码云或coding.net。以Gitee来举例。

Gitee免费版可创建 1000 个仓库,不限制公私有。单仓库大小上限为 500M,单文件最大 50M,用户总仓库容量为 5G。对于一般的keil嵌入式开发,免费版已经绰绰有余了。

1.注册Gitee,根据网站的提示完成注册。

2.配置ssh

本地Git仓库和Gitee仓库之间的传输是通过SSH加密的,所以需要配置ssh,使得托管平台认可你这台电脑的git操作。在Git Bash内执行以下指令创建SSHkey。

ssh-keygen -t rsa -C youremail@example.com

把邮件地址换成你自己的邮件地址,然后回车一路使用默认值即可。完成后在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以发送给他人。

Windows的目录在c盘的用户目录内。

3.上传ssh公钥到码云

点击右上角的用户头像,选择设置。然后在设置页面的左侧功能栏选择SSH公钥。将刚才生成的id_rsd.pub的内容拷贝进公钥内容框内,标题随意填写。

4.创建项目仓库

点击页面右上角的加号,并选择新建仓库。

04

本地提交代码与推送远程库

1.添加远端地址

git remote add origin ssh地址如 git remote add origin git@gitee.com:xxxx/xxxx.git

ssh地址在gitee仓库页面点击“克隆/下载”按钮获取。

可以通过 git remote -v指令查看远端的连接。

$ git remote -vorigin  git@gitee.com:xxxx/PROJECTTEST.git (fetch)origin  git@gitee.com:xxxx/PROJECTTEST.git (push)

2.拉取远端版本到本地

git pull origin master$ git pull origin masterremote: Enumerating objects: 4, done.remote: Counting objects: 100% (4/4), done.remote: Compressing objects: 100% (4/4), done.remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0Unpacking objects: 100% (4/4), done.From gitee.com:xxxx/PROJECTTEST * branch            master     -> FETCH_HEAD * [new branch]      master     -> origin/master

拉取成功后,本地目录可以看到刚才创建gitee仓库时创建的Readme文件。

3.本地提交代码

将project内原有的代码,inc/ src/目提交到本地仓库。

git add src/git add inc/git commit -m “first commit”

注意不要讲编译生成的文件add进去,只将代码add进仓库。因为编译生成的文件每次编译都会变化,这样每次的版本提交都包含了这些非代码改变的提交,不仅会使得版本很混乱也会占用很多远程仓库的空间。当然这也可以通过增加gitignore文件的方法来处理。

4.推送本地仓库到远端

git push origin master$ git push origin masterEnumerating objects: 32, done.Counting objects: 100% (32/32), done.Delta compression using up to 8 threadsCompressing objects: 100% (31/31), done.Writing objects: 100% (31/31), 22.22 KiB | 2.78 MiB/s, done.Total 31 (delta 12), reused 0 (delta 0)remote: Powered by GITEE.COM [GNK-5.0]To gitee.com:xxxx/PROJECTTEST.git   4d112e2..ebaf8bd  master -> master

直接git push会提示警告

$ git pushfatal: The current branch mater has no upstream branch.To push the current branch and set the remote as upstream, usegit push --set-upstream origin master

按照提示执行git push --set-upstream origin master,以后再推送版本,只需要输入git push就可以了。

至此,将一个现有的keil工程加入git管理,并在远端托管平台备份的操作都完成了,后面在这个工程上做开发并提交版本,就按照常规的git操作 git add、git commit、git push就可以了。本文开始提出的版本回退问题,只需要执行git reset –hard的指令,代码就自动回退到指定的提交点了。更多的git功能,开发者可以在后续的实际开发中不断学习完善。

本文授权转载自公众号“嵌入式案例Show”,作者潜言

-END-

推荐阅读

【01】Git如何优雅地回退代码【02】GitHub 上100个优质前端项目整理,非常全面!【03】这位小姐姐用动图展示了10个Git命令,看完过目不忘!【04】重磅!一次登录,终身免费:GitHub宣布向所有人免费开放所有核心功能【05】Github上这几个沙雕项目,够我玩三天!免责声明:整理文章为传播相关技术,版权归原作者所有,如有侵权,请联系删除

android git提交整个项目_使用git管理嵌入式软件版本相关推荐

  1. android git提交整个项目_使用子模块和子树来管理 Git 项目 | Linux 中国

    使用子模块和子树来帮助你管理多个存储库中共有的子项目.https://linux.cn/article-12244-1.html作者:Manaswini Das译者:Xiaobin.Liu 如果你参与 ...

  2. 使用git命令导出项目_【git学习】SVN项目迁移到Git操作指南

    参考链接 在迁移的过程中,参考了以下的链接: 第一步.建立SVN用户到git用户的映射文件在 Subversion,每个提交者在都在主机上有一个用户名,记录在提交信息中.如果想让已有的信息更好的映射到 ...

  3. eclipse使用git提交本地项目,提交至远程github上

    准备工作: 目的:eclipse使用git提交本地项目,提交至远程github上 eclipse版本:eclipse4.5  64位 jdk版本:jdk-1.7 64位 项目类型:maven web项 ...

  4. Git提交gitlab项目string) [], ParseException +FullyQualifiedErrorId :UnexpectedToken 异常,commit failed

    1.背景: 项目分支:1)主分支,测试分支,项目分支;2)昨天是可以提交的,今天就不行了 工具:gitBash , gitlab 操作:从本地向gitlab 测试分支 提交代码; 2.错误提示: Ru ...

  5. git提交本地项目gitlab合并分支提交代码合并分支时的冲突解决git拉取新项目

    总结:选中右键 git add commit pull 运行 push 一.把dev(主分支)合并到本地自己的分支 1.选中要提交的对象(可以是整个项目,也可以是单模块提交) 2.右键-Git-Add ...

  6. git 创建webpack项目_近期总结:手动搭建react项目,将项目从自己的库引入到新的项目中使用...

    背景:最近公司有这样一个需求,需要开发一个react工具类,这个工具类可以用在其他项目里使用,并且这个工具类比较大,需要多人协作开发. ​ 这个项目主要由同事负责,于是同事就将这个工具类当成一个单独的 ...

  7. git 修改分支名字_基础Git操作与GitHub协作吐血整理,收好!| 原力计划

    作者 | 光子俊来源 | CSDN博客出品 | CSDN(ID:CSDNnews) Git介绍 Git是目前世界上最先进的分布式版本控制系统,可以为我们管理项目.构建工程.多人协作提供便利,作为一个爱 ...

  8. git提交过滤package.json_eclipse配置git环境以及使用git提交本地仓和远程仓

    一.Eclipse上安装GIT插件EGit EGit插件地址: http://download.eclipse.org/egit/updates OK,随后连续下一步默认安装就可以,安装后进行重启Ec ...

  9. commit git idea 速度慢_关于Git,这篇文章还不够吗?

    Git 安装 Git下载地址: https://git-scm.com/downloads Git安装(Window/Mac): 选择不同系统安装包安装 检验是否安装成功: 出现Git Bash命令行 ...

最新文章

  1. day23:shell基础介绍 alias及重定向
  2. Balkan2007]Toponyms[链式前向星建字典树+getchar()读入优化]
  3. matlab 台风数据插值,matlab画台风轨迹图小tip
  4. python元类简述
  5. python3随笔-copy与索引
  6. boost::mpl模块实现pop_front相关的测试程序
  7. Flexbox兼容性语法汇总
  8. LeetCode 979. 在二叉树中分配硬币(DFS)
  9. 容器编排技术 -- Kubernetes是什么?
  10. PowerDesigner 学习
  11. 火力发电厂与变电站设计防火标准_详细解析仓库防火设计标准
  12. Linux字符界面的cat,Linux命令之cat详解
  13. linux mysql 数据类型_MySQL的数据类型和建库策略(转)
  14. 启动tomcat报错,Failed to start component
  15. dyld Library not loaded @rpath libswiftCore dylib 解决
  16. linux下目标文件的类型6,Linux下文件类型
  17. 打印 SpringMVC中所有的接口URL
  18. JavaScript(三)数值类型
  19. 十四五规划下建筑企业智慧建造数字化转型规划战略
  20. 二维拉普拉斯方程的数值解法

热门文章

  1. java mysql jsp分页_JSP+MYSQL+Java类优化分页的实例
  2. mysql 监听器_实例讲解Oracle监听口令及监听器安全
  3. MySQL 优化上来就分库分表?面试官:根本不懂底层原理!
  4. 别把 Gateway 不当一回事!
  5. 由Linux内核bug引起SSH登录缓慢问题的排查与解决
  6. Metaspace 引起的 FullGC 问题排查过程及解决方案
  7. adb查看手机cpu使用率_记录一下Unity打包Android在骁龙cpu上概率性卡死的问题
  8. tomcat的启动和窗体隐藏
  9. undefined symbol: _Py_ZeroStruct
  10. HRNet-Facial-Landmark-Detection 人脸关键点