# GIT 示例
# 为 PX4 提供代码
在 PX4 上添加功能要遵循规定的工作流程。为了在 PX4 上分享您的贡献,您可以遵循以下示例。
- 注册 (打开新窗口) 如果您还没有在 github 上下载
- 将 PX4-Autopilot 重新叉开(请参阅 "PX4-自动驾驶仪")。 这里 (打开新窗口))
- 将分叉仓库克隆到本地计算机上
CD ~/wherever/ Git 克隆 https://github.com/<;您的 Git 名字>;/PX4-Autopilot.git
- 进入新目录,初始化和更新子模块,并添加原始上游 PX4-Autopilot
CD PX4-自动驾驶仪 Git 子模块更新 --init --recursive Git 远程 增加 上游 https://github.com/PX4/PX4-Autopilot.git
- 您现在应该有两个远程软件源:一个版本库称为上游,指向 PX4/PX4-Autopilot,另一个版本库指向您分叉的 PX4 版本库。
- 可以使用以下命令进行检查:
Git 远程 -v
- 在当前主文件中添加您想要的更改。
- 创建一个新分支,用一个有意义的名称来代表你的功能您可以使用命令
Git checkout -b <;您的功能分支名称>;
git 分支
以确保您在正确的分支上。 - 通过添加相应的文件,将你希望成为提交一部分的修改添加进来如果您更喜欢使用图形用户界面添加文件,请参阅 Gitk (打开新窗口) 或
Git 增加 <;文件名>;
git add -p
(打开新窗口). - 将添加的文件提交,并附上一条有意义的信息,解释你的更改
Git 提交 -m "<您的提交信息>";
有关良好的提交信息,请参阅 捐款 节。
- 时间可能已经过去了一段时间,而 上游主站 (打开新窗口) 发生了变化。PX4 更喜欢线性提交历史,并使用 git rebase (打开新窗口).要在本地分支中包含上游的最新修改,请切换到主干分支然后从上游主站提取最新提交的内容
Git 结帐主
现在你的本地主版本已经是最新版本了。切换回功能分支Git pull upstream master
并在更新后的母版上重建Git 销售点 <;您的功能分支名称>;
Git 重建主站
- 现在,你可以将本地提交推送到分叉仓库了
Git 推源 <;您的功能分支名称>;
- 您可以通过浏览器访问您的分叉版本库来验证推送是否成功:
https://github.com/<您的 git 名称>/PX4-Autopilot.git
在那里,你会看到一条信息:一个新的分支已被推送到你的分叉仓库。 - 现在是创建拉取请求(PR)的时候了。在"新分支消息"(见前一步)的右侧,你会看到一个绿色按钮,上面写着"比较&创建拉取请求"。然后,它会列出你的更改,你可以(必须)添加一个有意义的标题(如果是单次提交的 PR,通常是提交消息)和消息(quot;新分支消息")。说明原因.检查 其他请求 (打开新窗口) 以作比较)
- 您完成了!现在,PX4 的负责成员将查看您的贡献,并决定是否将其整合。请定期查看他们是否对您的修改有疑问。
# 获得特定的释放
要获取 特定旧版本:
- 克隆 PX4-Autopilot repo 并导航至 PX4-Autopilot 目录:
Git 克隆 https://github.com/PX4/PX4-Autopilot.git CD PX4-自动驾驶仪
- 列出所有发布(标签)
Git 标签 -l
- 特定标记的结账代码(例如标记 1.7.4beta)
Git 检查 v1.7.4beta
# 更新子模块
更新子模块有几种方法。要么克隆版本库,要么进入子模块目录,并按照以下步骤进行更新 为 PX4 提供代码.
# 对子模块更新进行 PR
由于固件仍指向您更新之前的提交,因此需要提出子模块拉取请求,使固件使用的子模块指向最新的提交。
CD 固件
- 创建一个新分支,描述子模块更新的修复/功能:
Git checkout -b pr-some-fix
- 进入子模块子目录
CD <;子模块路径>;
- PX4 子模块不一定指向最新的提交。因此,请首先检出主代码并提取最新的上游代码。
Git 结帐主 Git pull upstream master
- 返回固件目录,像往常一样添加、提交和推送更改。
CD - Git 增加 <;子模块路径>; Git 提交 -m 更新子模块以包含..."; Git 向上游推送 pr-some-fix
# 查看拉取请求
即使要合并的分支只存在于某人的分叉上,你也可以测试他的拉取请求(更改尚未合并)。请执行以下操作:
Git 获取上游 pull/<;公关标识>;/head:<;分支名称>;
公关标识
是 PR 标题旁边的数字(没有 #),而 <分支名称>;
也可以在 公关标识
例如 <其他人的 git 名称>:<分支名称>;
.然后,你就可以通过以下命令在本地查看新创建的分支了
Git 分支机构
然后切换到该分支
Git 销售点 <;分支名称>;
# 常见陷阱
# 强制推送到分叉仓库
完成第一份 PR 后,PX4 社区的人员会对您的修改进行审核。在大多数情况下,这意味着您必须根据审核结果修正本地分支。在本地修改文件后,功能分支需要根据最新的上游/主版本再次重定向。不过,重定向后,就不能再直接将特性分支推送到您的分叉版本库了,而是需要使用强制推送:
Git push --force-with-lease origin <;您的功能分支名称>;
# 重置合并冲突
如果冲突发生在 git rebase
请参阅 本指南 (打开新窗口).
# 拉动合并冲突
如果冲突发生在 git pull
请参阅 本指南 (打开新窗口).
# 由于 git 标签过期而导致的构建错误
构建错误 错误:PX4 版本太低,预计至少为 vx.x.x
如果 git 标记已过期,就会出现这种情况。
这可以通过获取上游版本库标签来解决:
Git fetch upstream --tags