我是一个firmware engineer,平常在工作中,觉得最常用、最有效率、最受码农欢迎的代码管理软件就是git了。我是git的初级使用者,只是懂得一些简单的使用,但觉得对于一般使用者来说,其实懂得简单的使用也已经初步够用了。当然,可能这篇文章的阅读者更多的是硬件工程师,其实,也是一样的,也是可以作为你在日常工作中的工作备份(原理图、pcb layout图、项目需求文档等)、版本管理、组队协同开发等的实现。但在这里,我更多的是举例软件层面的代码备份、版本控制,至于协同开发,git服务器搭建,以及git、gerrit、jenkins的交叉使用这里先不讲。
以我现在所在的公司为例,我们软件工程师(各个地区加起来一百多个人),是使用了git、gerrit以及jenkins三者协同的方式进行所有项目、所有代码的开发。先说说各个软件的作用吧,按我的简要的理解就是:
Git:是用来管理你自己的local端以及server端的代码的,local端的代码进行修改后,提交到server端,这样server端大家也就可以看到你的修改,同时server端的代码也就可以让任何有权限的人fetch下来拿去使用。在我们公司,刚来的人,都是要先用git把server端的代码clone下来到自己本地,这样等于是你以后的开发,都是基于人家先前的开发的基础上实现的。
Gerrit:在我的使用过程中,我基本就是把它当作codereview的工具,它是网页版的,就是说,当我用git把修改后的代码提交到server端后,为了保证代码的高质量,方便以后的复用,这时候就需要邀请高级点的工程师来对你写的code进行review,并给出comment,你邀请人家对code进行review后,被邀请者会收到邀请邮件,然后按照里面的链接打开就可以看到所有修改的代码。这个过程中会有好多个来来回回的过程,review code的人不断给出comment,你不断按照comment进行修改或者给出合理的解释,最终被邀请者觉得code可以了,没有问题了,那么这个代码也就认为是高质量的,会最终accept到服务器端的主分支里。
Jenkins:其实是一个开源的为自动测试而生的软件,主要目的就是减轻我们在开发过程中发布新版本时避免不必要的很多重复性的工作。这个软件会自动监控或者手动触发对新提交到git server仓库里的代码进行编译(这些编译工具啥的当然要你自己配置好),如果编译通过,没有任何问题,那么它就会自动打包生成执行文件进行软件发布或者遵循某种规则进行测试。
以上几点都是我自个对三个工具的理解,有可能不是很准确,但我平时基本就是这么用的。现在回到git的简单使用,我在百度上搜索了下git,它有如下定义:
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
那么首先你要在你电脑上安装git这个软件,下载地址:https://gitforwindows.org/
至于哪个版本,应该都问题不大,找最新版本的下吧。然后进行安装,安装好后,下面开始简单的使用步骤讲解。
1. 首先,配置你的git,新建一个文件夹,比如说我这里取名gitRepository,然后在文件夹中点击鼠标右键,选择git bash here,出现如下图:
然后用命令:git config --global user.name "xxx" 设定user name,git config user.email "xxx" 设定email address
如果你还要与服务器端建立链接,还需要创建ssh key,并把key添加到服务器端,然后你就可以push代码到服务器端了,具体这里先不讲。我之前自个搭建过一个git加gerrit的服务器,大概管理过四五个人的使用,但现在由于手中只有一台电脑,不好从头到尾把服务器端的搭建也一一写出来。
设定好user name跟email address后,你可以用命令:git config –list进行配置的查看。
2. 接下来创建一个仓库(其实我们正常使用时一般都是直接从服务器端clone一个仓库下来)。在如上图所示的命令窗口中输入:git gui,得到如下图:
这里我们直接选择Create New Repository,路径就直接选为当前文件夹。接下来如下图所示:
那么我们就等于创建好了一个新的仓库。
3. 提交第一个修改。我们在新创建的仓库中即c/gitRepository文件夹下放入一个文档gitTest.txt,同时文件里最原始的信息为For git test:0,然后我们在如上图所示中点击Rescan,则可看到如下图所示信息:
说明:1区域内为被修改过的文档,2为被修改过的文档中的具体修改内容,3为你对此修改信息的描述。
然后我们点击1区域中的gitTest.txt的空白处,此文档将被放入箭头4处,然后我们就可以把此修改文档进行提交,点击Commit即可,如下图所示
现在我们关闭git gui,回到git bash窗口,可以看到一个master,即为我们的主分支。然后我们可以修改gitTest.txt文档,并重复以上的commit操作,然后我们用命令gitk或者gitk –-all进行查看可以看到如下图所示:
说明:1为分支master的最新位置,即最后提交的修改,2为修改提交者的信息,3为修改提交时间,4为branch名字,当前为master,5为此次修改的描述内容,6为具体修改的信息。还有parent是指此修改是你在哪一个commit或者叫哪一个SHA1 ID基础上修改的。
4. 以上几个步骤后,就等于你已经创建了你的代码repository,同时也进行了几个不同修改保存。有时候,我们开发中会遇到想要回到之前的版本,同时又不想舍弃现在的版本,或者说我们要新起一个其他项目,是在某一个基础上实现的,那么,我们就可以进行新建分支,让他从某一个修改中生长出来,比如说,我们DESCRIPTION:git test 2中新建一个branch,取名testBranch,我们可以鼠标选择到相应位置,点击右键后选择create new branch,弹出如下窗口:
在相应处填上新branch的名字,如testBranch。然后我们要checkout这个branch,那么代码就会返回到此处。有两种操作方式,一种是直接点击右键选择checkout this branch,或者在命令行窗口用git checkout testBranch。
那么此时,我们代码就回到了箭头所指的位置,然后我们在此处进行gitTest.txt的修改,然后进行commit,后我们在用命令gitk –-all查看,可以看到我们的代码生长如下图所示:
之后的话,你无论何时你都可以把当前branch的代码reset到之前的任何修改位置。
以上几点就是简单的local端的代码的个人管理,对于初学者可以尝试下,同时网上也可以搜索到一堆资料,我只是随便举下例子。其实git的功能非常之强大,刚开始学的话,你会觉得很是复杂,当你用习惯了,搞多了,很多东西你自然就会明白,说实在的,我在写这些东西的时候,觉得很别扭,感觉自己不知写的是什么了,但我只是想给大家一个大概的思路或者说是一个概念,就是git真的很好用,希望你能去尝试下,然后真正领悟到git的实用与强大。下面我再简单列举下我常用的git操作的一些命令及实用说明:
01. git reflog:查看最近的所有操作
02. git status:查看当前信息
03. gitk:查看local端的所有commit
04. gitk –-all:查看local端与server端的所有commit
05. git branch:查看local端的所有branch
06. git branch –a:查看local端与server端的所有branch,server端的branch显示为红色
07. git show:直接在命令窗口查看上一个修改的信息
08. git fetch:从服务器端download最新的代码
09. git merge:合并指定分支到当前分支
10. git pull:此命令等价于git fetch跟git merge两个命令的操作
11. git push:提交代码到remote端
12. git branch –d name:删除name分支
13. git clean –xfd:删除所有你不想commit的内容
14. git push origin –tag:提交tag到server端
15. git clone:克隆仓库到本地
16. git checkout name:checkout 某个分支
17. git gui:打开仓库操作的图形界面
18. git config –-list:git的所有配置信息
最后,Mr.Electronic君要非常感谢我的好兄弟Mr.Yang,在百忙之中、工作之余抽时间完成这篇文章,无私分享自己在日常工作中的一些经验,谢谢!同时也非常期待以后能有更多的文章与大家见面
。。
。。。。。。
If you want something,just do it now!
微信公众号:电子干货
领取专属 10元无门槛券
私享最新 技术干货