跳至内容

GIT 示例

为 PX4 提供代码

在 PX4 上添加功能要遵循规定的工作流程。为了在 PX4 上分享您的贡献,您可以遵循以下示例。

  • 注册 如果您还没有,请使用 github

  • 分叉 PX4-Autopilot repo(请参阅 这里)

  • 将分叉仓库克隆到本地计算机上

    CD ~/wherever/
    Git 复制 https://github.com/<;您的 Git 命名e>;/PX4-Autopilot.git
  • 进入新目录,初始化和更新子模块,并添加原始上游 PX4-Autopilot

    CD PX4-自动驾驶仪
    Git 子模组 更新 --启动 --递归
    Git 远程 增加 上游部门 https://github.com/PX4/PX4-Autopilot.git
  • 现在应该有两个远程版本库了:一个版本库名为 上游部门 指向 PX4/PX4-Autopilot 的存储库,以及一个存储库 产地 指向你的 PX4 仓库分叉副本。

  • 可以使用以下命令进行检查:

    Git 远程 -v
  • 在当前主菜单中添加您想要的更改。

  • 创建一个新分支,用一个有意义的名称来代表你的功能

    Git 销售点 -b <;您的 功能 分支机构 命名e>;

    您可以使用命令 git 分支 以确保您在正确的分支上。

  • 通过添加相应的文件,将你希望成为提交一部分的修改添加进来

    Git 增加 <;文件 命名e>;

    如果您更喜欢使用图形用户界面添加文件,请参阅 Gitkgit add -p.

  • 将添加的文件提交,并附上一条有意义的信息,解释你的更改

    Git 承诺 -m "<您的提交信息>";

    有关良好的提交信息,请参考 源代码管理 节。

  • 时间可能已经过去了一段时间,而 上游干流 发生了变化。PX4 更喜欢线性提交历史,并使用 git rebase.要在本地分支中包含上游的最新修改,请切换到主分支

    Git 销售点 主要

    然后从上游主程序中提取最新提交的内容

    Git 拉绳 上游部门 主要

    现在你的本地主分支已经是最新的了。切换回功能分支,并在更新后的主分支上重新加基

    Git 销售点 <;您的 功能 分支机构 命名e>;
    Git 主要
  • 现在,你可以将本地提交推送到分叉仓库了

    Git 推动 产地 <;您的 功能 分支机构 命名e>;
  • 您可以通过浏览器访问您的分叉版本库来验证推送是否成功: https://github.com/<您的 git 名称>/PX4-Autopilot.git

    在那里,你会看到一条信息:一个新的分支已被推送到你的分叉仓库。

  • 现在是创建拉取请求(PR)的时候了。在"新分支消息"(见前一步)的右侧,你会看到一个绿色按钮,上面写着"比较&创建拉取请求"。然后,它会列出你的更改,你可以(必须)添加一个有意义的标题(如果是单次提交的 PR,通常是提交信息)和信息 (说明原因.检查 其他请求 以作比较)

  • 您的工作完成了!现在,PX4 的负责成员将查看您的贡献,并决定是否将其整合。请定期查看他们是否对您的修改有疑问。

改变树源

我们建议使用 PX4 生产 命令来切换源代码分支。这样就不必记住更新子模块和清理构建工件的命令(切换后,未删除的构建文件将导致 "untracked files" 错误)。

在分支之间切换:

  1. 清理当前分支,去初始化子模块并移除所有构建工件:

    生产 清洗
    生产 清洁
  2. 切换到新的分支或标记(在这里,我们首先从 上游部门 远程):

    Git 取得 上游部门 PR_test_branch
    Git 销售点 PR_test_branch
  3. 获取新分支的子模块:

    生产 子模块清理

获得特定的释放

特定的 PX4 点发布作为 "PX4 "的标签。 发布分支并使用以下格式命名 v<release>;.这些是 在这里的 Github 上列出 (或使用 git tag -l).

要获取 特定旧版本 (标签):

  1. 克隆 PX4-Autopilot repo 并导航至 PX4-自动驾驶仪 目录:

    Git 复制 https://github.com/PX4/PX4-Autopilot.git
    CD PX4-自动驾驶仪

    信息

    您可以重复使用现有的 repo,而不是克隆一个新的 repo。在这种情况下,请清理构建环境(参见 改变来源树):

    生产 清洗
    生产 清洁
  2. 特定标记的结账代码(例如标记 v1.13.0-beta2)

    Git 销售点 v1.13.0-beta2
  3. 更新子模块:

    生产 子模块清理

获取发布分支

发布的分支是 主要分支,用于将主程序中的必要修改反向移植到发行版中。分支的命名格式为 release/<release_number>; 例如 release/v1.13).它们是 在此列出.

获取发布分支

  • 克隆 PX4-Autopilot repo 并导航至 PX4-自动驾驶仪 目录:

    Git 复制 https://github.com/PX4/PX4-Autopilot.git
    CD PX4-自动驾驶仪

    信息

    您可以重复使用现有的 repo,而不是克隆一个新的 repo。在这种情况下,请清理构建环境(参见 改变来源树):

    生产 清洗
    生产 清洁
  • 获取所需的发布分支。例如,假设您想要 PX4 v1.14 的源代码:

    Git 取得 产地 版本/1.14
  • 查看该分支的代码

    Git 销售点 版本/1.14
  • 更新子模块:

    生产 子模块清理

更新子模块

更新子模块有几种方法。要么克隆版本库,要么进入子模块目录,并按照以下步骤进行更新 为 PX4 提供代码.

对子模块更新进行 PR

由于固件仍指向您更新之前的提交,因此需要提出子模块拉取请求,使固件使用的子模块指向最新的提交。

CD 固件
  • 创建一个新分支,描述子模块更新的修复/功能:

    Git 销售点 -b pr-some-fix
  • 进入子模块子目录

    CD <; 子模组e>;
  • PX4 子模块不一定指向最新的提交。因此,请首先检出主代码并提取最新的上游代码。

    Git 销售点 主要
    Git 拉绳 上游部门 主要
  • 返回固件目录,像往常一样添加、提交和推送更改。

    CD -
    Git 增加 <; 子模组e>;
    Git 承诺 -m 更新子模块以包含...";
    Git 推动 上游部门 pr-some-fix

查看拉取请求

即使要合并的分支只存在于该人的分叉中,你也可以测试某人的拉取请求(更改尚未合并)。请执行以下操作:

Git 取得 上游部门  拉/<;公关 ID>;/head:<;分支机构 命名e>;

公关标识 是 PR'title 旁边的数字(不含 #),而 <分支名称>; 也可以在 公关标识例如 <其他人的 git 名称>:<分支名称>;.然后,你就可以通过以下命令在本地查看新创建的分支了

Git 分支机构

然后切换到该分支

Git 销售点 <;分支机构 命名e>;

常见陷阱

强制推送到分叉仓库

完成第一份 PR 后,PX4 社区的人员会对您的修改进行审核。在大多数情况下,这意味着您必须根据审核结果修正本地分支。在本地修改文件后,功能分支需要与最新的上游/主分支一起重新构建。不过,重定向后,就不能再直接将特性分支推送到您的分叉版本库了,而是需要使用强制推送:

Git 推动 --强制租赁 产地 <;您的 功能 分支机构 命名e>;

重置合并冲突

如果冲突发生在 git rebase请参阅 本指南.

拉动合并冲突

如果冲突发生在 git pull请参阅 本指南.

由于 git 标签过期而导致的构建错误

构建错误 错误:PX4 版本太低,预计至少为 vx.x.x 如果 git 标记已过期,就会出现这种情况。

这可以通过获取上游版本库标签来解决:

Git 取得 上游部门 --标签