嵌入式Linux入门4:版本控制git的使用
本文介绍版本控制git的使用。git的使用,网络上有很多资料,笔者使用git多年,因此本文列出简单操作命令,顺便说一说使用经验。
一、Windows篇
由于嵌入式Linux使用的uboot、kernel、busybox等源码,可能会因为文件大小写,或特殊文件名称,导致在windows系统上的文件被覆盖或无法正常打开,因此,强烈建议使用linux系统来存储这些源码文件,并在linux下使用git进行版本管理。
但是,对于一些性的版本管理,如应用层程序代码、文档,强烈建议使用Windows下的git工具,git工具比较多,首推TortoiseGit,它是git命令行的封装,操作习惯类似TortoiseSVN。所有操作基于鼠标右键菜单。Windows详细教程参考文后附录。
二、Linux篇
本节介绍Linux系统下git命令的使用,以及平时遇到的问题的解决方案。
1、创建仓库
创建空仓库:
1 |
git init --bare |
在已有目录中创建仓库:
1 |
git init |
说明:建议使用git init
来创建,创建后的仓库,即为本地仓库,如果需要提交到远程git服务,如自建服务,第三方服务gitlab、github,则在这些服务上创建空仓库,再将本地仓库提交,之后,远程git服务上的版本内容跟本地无异,即会保留本地之前的版本内容。在不确定未来是否一定提交远程仓库的情况下,可试用本方法。
2、添加、删除、查看状态、提交
添加文件/目录命令:
1 2 |
git add foo(文件或目录)(在命令行下,每次提交都要进行add操作,不管是新加的还是修改的) git add .(新加文件或目录——当前目录所有的文件) |
添加所有更新:
1 |
git add -u |
提交前使用:
1 |
git status |
查看状态,确保所有要提交的文件出现在:“Changes to be committed:”下面,然后提交本地仓库:
1 |
git commit -m "xxxxx" |
然后提交远程仓库:
1 2 3 |
git push origin master // 提交默认的master分支 或 git push --all |
删除:
1 |
git rm xxx.c |
3、将当前修改保存到暂存区
1 2 3 |
git stash save # 保存到暂存区 git stash list # 查看暂存区列表 git stash pop # 弹出暂存区 |
注:在多人协同开发时,stash功能非常有用,一般的流程是,如果你知道远程仓库已有提交,如通过邮件告知(本站有相关文章,搜索“电子邮件”关键字),或通过口头告知,此时,你理应先更新代码(假定前提是以远程仓库为准,而不是以你本地为准),如果直接pull代码,可能会有冲突。此时stash功能就派上用场了,在本地进行stash save
,接着git pull
更新代码,接着stash pop
,这时,还是有可能存在冲突的,但至少,不会像直接更新代码那样麻烦。各位可以尝试一下两者的区别。
独自开发时,在不同的分支之间切换,而不同的分支双有修改时,也可以使用暂存功能。
一般建议只进行一次save和pop,即执行了save,下次就要执行pop,不建议多次save。
4、设置用户名信息
注:在命令行下要先设置用户名,否则无法提交,示例:
1 2 3 4 5 6 7 8 9 10 11 |
$ git commit -m "first commit"*** Please tell me who you are.Rungit config --global user.email "you@example.com"git config --global user.name "Your Name"to set your account's default identity. Omit --global to set the identity only in this repository. |
注:可以用git config --global user.email “” 清除
5、打标签(tag)
1 2 3 |
查看tag:git tag 添加tag:git tag -a alpha1.0 -m "XXX" 删除tag:git tag -d tag-name |
6、为某一个commit打上tag
1 |
示例:git tag v1.1 dffa062104b1a27ebb0a3881f770baed7c033a0b -m "v1.1 release" |
7、推送到远程:
1 |
git push origin [tagname] |
示例:
1 2 3 |
git push origin alpha1.0git push mygit master // mygit仓库 |
8、提交所有的tag到远程仓库:
1 |
git push origin --tags |
origin为远程仓库的名称,如果有多个,可以指定其它的仓库
9、删除远程的tag
1 |
git push github :refs/tags/v1.0 |
三、心得
对于git的使用,原则上哪种方式适合自己,就使用哪一种。如前所述,像Linux内核源码,有些头文件仅使用大小写字母来区分,这种情况就不适合在Windows系统使用TortoiseGit了,只能在Linux下创建仓库。但是,对于小型项目来说,TortoiseGit更适合,包括查阅代码修改,查阅log,等等。
对于提交日志的编写,建议达到“一定合适的程度”。不能过粗略,因为自己和他人无法从日志上了解信息。也不能过细,细节应该体现于代码中。如果有bug追踪管理系统(如github),可以在日志中提供fix bug xxx
。如果项目有多个模块,最好在日志上表明模块名称,如“tools:添加mkimage”、“fb模块:新加图片居中功能”。总之,尽量做到方便自己的同时方便他人(更多的是为日后将维护代码的你自己)。
附:
更多详细内容,请参阅视频教程:《git版本控制实战》。
李迟 2017.7.9 周日
嵌入式Linux入门4:版本控制git的使用相关推荐
- 嵌入式Linux入门经典笔记
史上最牛的Linux内核学习方法论 点击下载 我的arm_linux移植笔记 点击下载 S3C2440完全开发流程 点击下载 Linux系统命令及其使用详解完整版 点击 ...
- 分享:嵌入式Linux入门学习指导
很多嵌入式linux初学者对嵌入式linux学习十分迷茫,不知道该怎么一步步学习,嵌入式linux学习方法,学习的流程步骤以及学习过程中需要看哪些好的书籍.下面凌阳教育嵌入式培训网就为大家整理的嵌入式 ...
- 嵌入式Linux入门13:应用层调试
本文主要介绍应用程序的调试方法. 很多网友问我怎么调试内核,怎么查找代码bug.其实我的方法不多.一是靠经验,掉入的坑多了,做笔记回顾,自然就有了经验.二是靠printf/printk大法跟踪.三是利 ...
- 嵌入式 Linux 入门 环境篇(二、安装虚拟机 — 体验 Ubuntu 22.04)
嵌入式 Linux入门 环境篇第二课,正好换了新电脑,更新 Ubuntu 虚拟机的安装, 体验一下 Ubuntu 22.04 ...... by 矜辰所致 前言 因为以前的电脑虚拟机环境我都配置好了, ...
- 嵌入式linux入门学习规划
嵌入式linux入门学习规划 如何理解嵌入式系统 ◆嵌入式系统是面向用户.面向产品.面向应用的,它必须与具体应用相结合才会具有生命力.才更具有优势.因此可以这样理解上述三个面向的含义,即嵌入式系统是与 ...
- 嵌入式linux怎么入门,嵌入式linux入门六步走
学习嵌入式linux怎样才能快速入门?这是很多出来华清远见参加嵌入式培训学员爱问的问题,这里做一个总结供大家参考,嵌入式linux入门可以概括为六步走: 第一步:学习基本的裸机编程 对于学硬件的人而言 ...
- 嵌入式linux入门3-3-套接字
个人博客对应地址:嵌入式linux入门3-3-套接字 socket主要函数 创建套接字 socket,我们一般翻译为套接字,其是一种通讯接口,允许位于不同计算机之间的线程通过网络进行通讯,我们可以使用 ...
- 嵌入式 Linux 入门 环境篇(三、开发板和 PC 的网络互通)
嵌入式 Linux入门 环境篇第三课,开发板与PC的网络配置, 我们要实现 windows.ubuntu 和开发板三者的互通. ...... by 矜辰所致 前言 在环境篇前面的文章我们通过终端工具使 ...
- 嵌入式 Linux 入门(十、Linux 下的 C 编程)
嵌入式 Linux 入门第十课,聊聊 linux 下的 C 编程...... 矜辰所致 插一句,问题讨论群在文末的推广,以后大家提问可以在群中,即便我不在也能看到历史记录. 目录 前言 一.C 语言编 ...
- 嵌入式 Linux 入门(二、Linux 文件系统、文件类型及权限管理)
嵌入式 Linux入 门第二课, linux 文件系统.文件类型及权限管理. ...... 矜辰所致 目录 前言 一.Linux 文件属性 1.1 Linux 文件类型 1.2 Linux 文件权限及 ...
最新文章
- 模拟简单计算器及比较大小
- 笔记-计算机网络基础-计算机网络分类
- Windows在当前目录快速打开cmd的方法
- OpenCV使用dnn重新着色灰度图像的实例(附完整代码)
- 导入win32_为什么DLL在导入项没有成功解析时会加载失败?
- UIView 动画进阶
- 武汉科技大学计算机转专业吗,武汉科技大学普通本科生专业选择与转专业管理办法...
- Android Studio-------添加按钮
- 计算机科学竞赛加拿大,滑铁卢大学计算机科学与数学竞赛最新考试时间!
- 全面理解Unity加载和内存管理
- 【漏洞复现】PHPmyadmin 4.8.1后台Getshell新姿势
- MyBatis3整合Spring3、SpringMVC3
- 极客大学产品经理训练营:需求评审 第13课总结
- C#键盘钩子之局部钩子和全局钩子
- Bootstrap框架----标签Tag输入用法--Bootstrap-tagsinput
- windows机器硬盘不能超过2T详解及图文破解方法
- u 盘安装linux系统,CentOS 7 系统安装之 U 盘安装法
- 揭开全景相机的创业真相
- 如何将.md文件转换为pdf
- FTP如何用计算机名,ftp服务器使用虚拟主机名(怎么设置ftp服务器)
热门文章
- 多叉树的前序遍历_多叉树的创建和遍历(为Trie树做准备)
- 运算放大器基本公式_还在被三阶/四阶/运算放大器滤波器PLL这些概念困扰?这篇文章帮你搞懂它...
- vs 未能找到符号_意大利甲级赛事分析:尤文图斯vs卡利亚里
- 知网又火了!续订费近千万且连年上涨 中科院:不堪重负 停用
- 荣耀Magic4性能体验超苹果再次实锤!非官方游戏性能对比出炉
- 三星Galaxy S22系列发布会准确时间曝光:2月9日正式揭晓
- 源于零售业,如何赋能零售业?亚马逊云科技再发布四项新服务
- 特斯拉CEO马斯克:可能明年3月左右在中国推出Model S Plaid
- 2021北京民营企业百强榜单发布 美团、水滴等公司入选
- 苹果也“翻车”,服务器大面积宕机三小时