PX4 固件(Firmware)中国镜像 及 Git 使用入门

使用 git 可以说是使用开源无人机相关软件必备的技能,既是加入全球开源社区的敲门砖,又是日常项目管理的必备工具。但是在国内常有两大困难,一是GitHub被墙,经常访问速度很慢,二是很多学校并没有专门教 git 如何使用的课程。

通过本文你将了解到

  • 什么是 Git
  • Git 的安装
  • 如何为 Git 做初始化设置
  • Git 的基本操作
  • 从 PX4 中国镜像获取代码

什么是 Git ?

Git 是 Linux 的创始人 Linus Torvalds 开源的一款分布式版本控制系统,以帮助开发者更好的对项目进行版本管理。每一个优秀的开发者在进行项目开发时都会第一时间给自己的项目加上 Git,以便能更好的追踪代码修改,进行版本回溯等操作。在多人协作的开发过程中,Git 更是必不可少的。因此,本书中将使用 Git 来管理项目的所有代码,让你在阅读本书的时候能够体会到 Git 的强大,了解实际开发中我们对 Git 的应用。

在现代化的项目开发中,Git 基本上是标配。

Git 的安装

  • Windows 下的安装

推荐安装 PX4 的 Windows Cygwin 工具链,后续的教程中我们也会用到,将会自带 Git 工具
说明链接:https://dev.px4.cc/en/setup/dev_env_windows_cygwin.html
file

如果你的电脑上有 Visual Studio 2017 的话
可以使用 “适用于 VS 2017 的 x64 本机工具命令提示”(x64 Native Tools Command Prompt for VS 2017),也自带了 Git 工具。(注意:使用此工具编译时会发生换行符错误的问题【 $'\r': 未找到命令】,需要转换,请谨慎使用。)
file

如果仅需要命令行工具的话,请安装 git 的 windows 版
https://git-scm.com/downloads

或者您也可以安装 Git for windows,将会包含 Cygwin 的 Git Bash 和 Git GUI
https://gitforwindows.org/
file
file

  • Linux 下的安装

可使用包管理工具进行安装,如 Ubuntu:

$ apt install git

一些 Linux 发行版会自带 Git 工具,查看是否已安装 Git 可使用命令:

$ git --version

如果有输出版本号的话,则代表您已经装好了 Git 。

  • MacOS 的安装

站长暂未使用过 Mac ,将会在稍后更新。

Git 的基本设置

使用 Git 之前我们需要做一些基本设置。

首先我们对 Git 进行用户名和邮箱进行设置,请参照下面格式,替换为你自己常用的用户名和邮箱来完成设置:

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

解释: --global 选项代表对 Git 进行全局设置。

这里个人信息设置的作用,是为你在代码提交时自动署名标记,方便查看提交日志时区分作者。如:
file

接下来设置 Git 推送分支时相关配置:

$ git config --global push.default simple

此设置是 Git 命令 push 的默认模式为 simple,当我们执行 git push 没有指定分支时,自动使用当前分支,而不是报错。

克隆 PX4 固件开源代码

为了更好的帮助大家在无人机飞控项目中使用 Git,本教程后续将以 PX4 固件项目以基础为例,首先我们需要从远端获取项目代码,我们先将目录切换到你准备下载源码的目录。

$ cd /你存放代码库的目录

比如我一般存放在/home/github

$ cd /home/github

然后我们在这个目录从远端克隆源码:
你可以选择从 Github 的官方库下载,但在中国经常会很慢,甚至经常会下载失败:

/home/github$ git clone https://github.com/PX4/Firmware.git

所以本社区在国内 “码云 Gitee” 上做了个镜像,方便大家下载,可以近乎满速的下载完成,网速快的朋友可能只需几秒钟:

确保你在用于下载的目录$ git clone https://gitee.com/dimianzhan/px4.git

目前本镜像大概可以每周更新一次,未来会通过命令行自动执行,大概每天更新一次,方便国内用户使用。

进入目录查看项目

/你的下载目录$ cd px4
/你的下载目录/px4$ 

如果在 linux 系统下,你可以使用ll命令查看目录结构:
file

Git 有个 git log 命令可以帮助你查看项目最近的 commits(提交):

$ git log

file

从输出信息中可以很清晰的看到每次提交的作者、日期、描述等信息。注意看这里的 Author 项的内容就是我们上面设置的用户信息。 按键盘q退出,返回命令行。

Git 的强大

通过上面 Git 的基本讲解,你可能还无法真正体会到 Git 的强大。在平时开发中,我们有时候可能会因为手误或其它原因将某些重要文件删除。如果之前有将此文件纳入到 Git 中,这时便可以利用 Git 来对误删文件进行恢复。请看下面演示。

我们先假装不小心删除 package.xml 文件:

$ rm package.xml
$ ll

使用 ll 打印出文件目录列表时,能看到 package.xml 文件已被成功移除。

查看 Git 状态:

$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    package.xml

no changes added to commit (use "git add" and/or "git commit -a")

能看到有相关提示显示 package.xml 文件已被删除,这时你可以选择将删除的文件进行恢复或提交。

下面我们使用 Git 进行恢复被删除文件:

$ git checkout -f
$ ll

这时能看到 package.xml 文件已成功恢复。git checkout -f 的作用是将在暂存区的更改文件进行强制撤销。

上面强大的功能仅为 Git 的冰山一角,后面教程将讲解更多关于 Git 的使用。如果你想学习更多关于 Git 相关的知识,可以查阅《Pro Git》一书进行学习。


今天先讲到这里,后面会为大家讲解分支的创建与合并,还有 Commit(提交)与 push(推送)。