ardupilot开发 --- git 篇

这篇具有很好参考价值的文章主要介绍了ardupilot开发 --- git 篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 一些概念

  • 工作区:就是你在电脑里能看到的目录;
  • 暂存区:stage区 或 index区。存放在 :工作区 / .git / index 文件中;
  • 版本库:本地仓库,存放在 :工作区 / .git 中
    ardupilot开发 --- git 篇,无人机/建模/PX4/Adurpilot/Pixhawk,Ubuntu,git,Ardupilot
  • 关于 HEAD
    • 是所有本地分支的游标(指针);
    • HEAD既可以指向某个分支,还可以指向某个分支的某个(次)提交;
    • HEAD指向谁,谁就是和当前工作区、暂存区、相关联的分支,即:对于add、checkout、commit命令去操作的分支对象!
    • HEAD的存在非常重要,因为它提供了对当前工作区状态的快速访问和管理;
    • 相关命令:
      git checkout branch_name命令切换分支,HEAD会指向所切换到的分支。
      git checkout commit_hash命令切换到某个具体的提交,HEAD会指向该提交。
  • master和origin的关系
    • master 表示本地仓库主分支(名称);
    • origin 是远程仓库的代指;origin 是远程Git仓库的默认名称;
    • origin 是远程仓库的主分支?
    • 例如在使用:git clone https://github.com/ArduPilot/ardupilot.git 下载远程仓库代码时,在后续的操作中,默认会将 https://github.com/ArduPilot/ardupilot.git 指向的远程仓用origin来表示!
  • 本地仓库
    远程仓库的拷贝(这个说法不太准确)
  • 远程仓库
    • 用于多个本地仓库的协调开发;
    • 用于备份本地仓库;
  • 分支
    • 分支也称为“快照”
    • 一个分支代表一条独立的开发线;
      使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作,最后还可以合并到主分支:
      ardupilot开发 --- git 篇,无人机/建模/PX4/Adurpilot/Pixhawk,Ubuntu,git,Ardupilot
    • 只有仓库才存在所谓分支,工作区和暂存区不存在分支的说法;本地仓库有分支,本地分支;远程仓库有分支,远程分支;
    • 相关命令:
      • 参考文献:http://rogerdudler.github.io/git-guide/index.zh.html
      • 在远程开好分支,本地直接拉下来;
        git checkout -b feature-branch origin/feature-branch //检出远程的feature-branch分支到本地
      • 本地开好分支,推送到远程;
        git checkout -b developer_gen3_new_branch_name //在本地创建分支
        git push --set-upstream origin developer_gen3_new_branch_name //推送到远程
      • git branch + 分支名字:创建本地分支
      • git checkout -b <分支名> :创建并切换到新的本地分支
      • git checkout<分支名>: 切换到本地分支
      • git branch 查看当前分支
      • git branch -a:查看全部分支(包含本地和远程)
      • git branch -v:查看每一个(本地)分支的最后一次提交
      • git branch --merged:查看哪些(本地)分支已经合并到当前(本地)分支
      • git branch --no-merged : 查看哪些(本地)分支还没有合并到当前(本地)分支
      • git branch --no-merged master:查看当前未合并到master分支的有哪些?
      • git branch --merged master:查看当前已合并到master分支的有哪些?
      • git merge <分支名>:希望要把哪个分支合并到当前所在的分支
      • git branch -d [branchname]:删除本地分支
      • git push origin --delete [branchname]:删除远程分支

2. Git 基本命令简述

  • 参考文献:https://www.runoob.com/git/git-basic-operations.html
  • 关于工作区、暂存区、本地仓库 的操作:
    ardupilot开发 --- git 篇,无人机/建模/PX4/Adurpilot/Pixhawk,Ubuntu,git,Ardupilot
命令 说明
git remote -v 查看远程仓库的地址
git add 添加文件到暂存区
git status 查看仓库当前的状态,显示有变更的文件。
git diff 比较文件的不同,即暂存区和工作区的差异。
git commit 提交暂存区到本地仓库。
git reset 回退版本。
git rm 将文件从暂存区和工作区中删除。
git mv 移动或重命名工作区文件。
git checkout 分支切换。
git switch 更清晰地切换分支(Git 2.23 版本引入)。
git restore 恢复或撤销文件的更改(Git 2.23 版本引入)。
  • 关于远程仓库、本地仓库相关的操作:
    ardupilot开发 --- git 篇,无人机/建模/PX4/Adurpilot/Pixhawk,Ubuntu,git,Ardupilot
命令 说明
git remote 远程仓库操作
git clone 从远程获取代码库
git clone -b 分支名 仓库地址 clone 指定分支
git pull 下载远程代码并合并
git push 上传远程代码并合并
git submodule update --init 初始化子模块
git submodule update --init --recursive 下载子模块代码
  • 日志
命令 说明
git log 查看历史提交记录
git blame 以列表形式查看指定文件的历史修改记录
  • Git 标签
    https://www.runoob.com/git/git-tag.html

3. Git 服务器

  • 自己搭建服务器
  • 使用 github
  • 参考:https://www.runoob.com/git/git-server.html

4. fork 源作者更新后如何同步更新且不覆盖自己仓库的代码

  • https://blog.csdn.net/luoyeyilin/article/details/108994031
  • 试了一下,github上的 sync fork 操作并不会覆盖掉自己仓库下master分支中自己编写的代码…

5. Git 配置自定义编辑器

  • 查看当前编辑器
    git config --global core.editor
    执行命令后没显示则表示没配置
  • 指定一个编辑器
    git config --global core.editor 编辑器名

6. 指令大全用法案例

6.1 本地

6.1.1 git remote :查看远程仓库地址origin

  • git remote -v

6.1.2 git --help :帮助

  • git --help
  • git help -a
    查看所有子命令
  • git help -g
    查看相关的概念
  • 向前、向后 一行:
    e, y
  • 输入git --help 或git subCmd --help 后出现冒号 “:” 或 “press h for help or q to quit” 的:
    按下 e, y 进行翻页

6.1.3 git status :显示工作目录和暂存区的状态

所谓状态的包括(对于状态的详细解释)

  • 拟提交的变更 这是已经放入暂存区,准备使用 git commit 命令提交的变更。
  • 未暂存的变更 这是工作目录和暂存区快照之间存在差异的文件列表。
  • 未跟踪的文件 首次添加到目录中的文件。
  • 已忽略的文件
实例 描述
git status 显示工作目录和暂存区的状态。
git status -s 以精简的方式显示文件状态。
git status --ignored 显示工作目录和暂存区的状态,列出包括被忽略的文件。
查看文件的具体修改详情请移步 git diff git diff 或 git diff -stat

git status --ignored:
ardupilot开发 --- git 篇,无人机/建模/PX4/Adurpilot/Pixhawk,Ubuntu,git,Ardupilot

6.1.4 .gitignore :添加忽略文件 / 文件夹

  • git上传项目时有一些目录和文件是不需要上传的,如node_modules、package-lock.json等,容易导致他人拉取后冲突。可以使用git add xx 选择性上传文件,但很麻烦。
  • 工作目录下的 .gitignore 可以配置过滤文件、文件夹;
  • . gitignore 语法:
#忽略.idea文件夹及文件夹下文件
.idea 
#忽略以.iml结尾的文件
*.iml 
# 忽略*.o和*.a文件
 *.[oa]
# 忽略*.b和*.B文件,my.b除外
*.[bB]
!my.b
# 忽略dbg文件和dbg目录
dbg
# 只忽略dbg目录,不忽略dbg文件
dbg/
# 只忽略dbg文件,不忽略dbg目录
dbg
!dbg/
# 只忽略当前目录下的dbg文件和目录,子目录的dbg不在忽略范围内
/dbg
  • . gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
    git rm -r --cached .
    git add .
    git commit -m ‘update .gitignore’

6.1.5 git diff :查看工作区、暂存区、版本库之间的差异

查看、比较被git管理的文件在工作区、暂存区和版本库之间的差异。但只针对已跟踪的文件!
四个情景下文件的差异的比较:
1)工作区和暂存区
2)工作区和版本库
3)暂存区和版本库
4)不同版本之间

  • 工作区和暂存区的差异
git diff  列出详细差异,e y键前进后退
git diff -- filename1 filename2 ...   查看多个文件在工作区和暂存区间的差异
  • 工作区和版本库的差异
git diff HEAD  工作区与最新版本库间的差异
git diff commitID  工作区与某提交版本间的差异,commitID是版本ID,git log获取版本hash
git diff HEAD -- filename1 filename2 ...  指定文件在工作区与最新版本库间的差异
git diff commitID -- filename1 filename2 ...  指定文件在工作区与某版本库间的差异
  • 暂存区和版本库间的差异
git diff --cached  暂存区和最新版本库(HEAD)间的差异
git diff --cached commitID  暂存区和指定版本间的差异
git diff --cached -- filename1 filename2 ...  指定文件在暂存区与最新版本库间的差异
git diff --cached commitID  -- filename1 filename2 ...  指定文件在暂存区与某版本库间的差异
  • 不同版本间的差异
git diff commit1ID commit2ID 版本1和版本2间的差异
git diff commit1ID commit2ID -- filename1 filename2 ...  指定文件在版本1和版本2间的差异
  • 常用的option
--stat  简洁的展示差异 
其他,如路径约束等
  • 如何获取版本hash?
    上文提到的 commitID 即 hash 值;
git log : 查看详细历史记录,按提交时间倒叙排列,包含提交时间,提交作者,提交备注以及提交的hash值;
git log --pretty=oneline : 格式化log形式,每条log只有一行,只包含 完整的hash值 和 提交的备注;
git log --oneline : 格式化log形式,每条log只有一行,只包含 短hash值 和 提交的备注;

6.1.6 git add :添加文件到暂存区:

git add *  添加所有跟踪、未跟踪文件的更改到暂存区
git add .  添加所有已跟踪、未跟踪文件的更改到暂存区
git add -u .  -u 只添加已跟踪文件的修改到暂存区
git add filename  指定文件
git add index/  指定文件夹

6.1.7 git commit :工作区或暂存区提交到版本库

# 将暂存区内容提交到版本库, 会跳进编辑器以输入提交信息
git commit
# 将某些已被跟踪的文件提交到版本库(包含工作区和版本库)
git commit [file1] [file2] [...]
# 将暂存区内容提交到版本库, 无需进入编辑器输入提交信息
git commit -m [message]
# 跳过 git add, 将所有已被跟踪的文件更改提交到版本库
git commit -am [message]
# 使用一次新的commit, 替代上一次提交,如果代码没有任何新变化, 则用来改写上一次commit的提交信息
git commit --amend -m [message]

6.1.8 git config :管理配置文件

  • git config --list
    查看配置文件
  • git config --edit
    编辑配置文件
  • git config --global core.editor 编辑器名如gedit
    指定git的默认编辑器

6.2 远程

6.2.1 git pull :拉取远程分支并与本地分支合并

  • pull 前
    pull后,工作区也会被更新,因此pull前最好先add和commit防止代码丢失。
    pull 前 先配置一些merge的属性:
git config pull.rebase false  # merge (the default strategy)
git config pull.rebase true   # rebase
git config pull.ff only       # fast-forward only
git config pull.rebase false --global # 全局属性--global 
  • git pull 拉取与本地当前分支同名的远程分支,然后合并到当前本地分支,并在本地创建一个提交
  • git pull <远程主机名> <远程分支名>:<本地分支名>
    如: git pull origin master:adrc-v1.0 将远程的master分支拉取并合并到本地的adrc-v1.0
    如果远程某分支与当前分支合并,则冒号后面的部分可以省略
  • 合并冲突
    • pull后提示冲突:手动合并冲突 ~> add ~> commit ~> push ~> 检查合并是否成功 git log
      ardupilot开发 --- git 篇,无人机/建模/PX4/Adurpilot/Pixhawk,Ubuntu,git,Ardupilot
    • git statusgit diff --statgit diff --name-only --diff-filter=U 查看冲突的文件列表
    • git diff --diff-filter=U 则可以看到冲突的具体内容,按e翻页
    • gedit 冲突文件名:手动解决冲突
    • git add 冲突文件 或 git add .
    • git commit :提交合并
    • git log :查看合并是否成功
      ardupilot开发 --- git 篇,无人机/建模/PX4/Adurpilot/Pixhawk,Ubuntu,git,Ardupilot

6.2.1 git push 推送本地当前分支到远程仓库

  • git push 只推送当前分支,其他分支不理
  • push时报错:fatal: Authentication failed for ‘https://github.com/xxxxxl/ardupilot.git/’
    只需要把密码替换为token即可,如何获取token则参考:https://blog.csdn.net/weixin_63031041/article/details/128731242

6.2.3 git clone 克隆远程仓库到本地

  • git clone 仓库地址
    默认克隆master分支
  • git clone -b 分支名 仓库地址
    只克隆指定分支
  • git submodule update --init --recursive
    初始化并下载子模块

6.3 分支

查看、创建、切换、合并、删除

  • 在远程开好分支,本地直接拉下来;
    git checkout -b feature-branch origin/feature-branch //检出远程的feature-branch分支到本地
  • 本地开好分支,推送到远程;
    git checkout -b developer_gen3_new_branch_name //在本地创建分支
    git push --set-upstream origin developer_gen3_new_branch_name //推送到远程
  • git branch + 分支名字:创建本地分支
  • git checkout -b <分支名> :创建并切换到新的本地分支
  • git checkout<分支名>: 切换到本地分支
  • git branch 查看当前分支
  • git branch -a:查看全部分支(包含本地和远程)
  • git branch -v:查看每一个(本地)分支的最后一次提交
  • git branch --merged:查看哪些(本地)分支已经合并到当前(本地)分支
  • git branch --no-merged : 查看哪些(本地)分支还没有合并到当前(本地)分支
  • git branch --no-merged master:查看当前未合并到master分支的有哪些?
  • git branch --merged master:查看当前已合并到master分支的有哪些?
  • git merge <分支名>:希望要把哪个分支合并到当前所在的分支
  • git branch -d [branchname]:删除本地分支
  • git push origin --delete [branchname]:删除远程分支

6.4 查看提交历史、哈希、commit Id

  • git log
  • git log 分支名
  • git log --reflog
  • git log --format=oneline

6.5 标签 tag

  • 给最新的提交大标签:git tag -a tag -m tagmsg
  • 给某个提交贴标签:git tag -a tag hash
  • 查看标签:git log --decorate
  • 查看所有标签:git tag

参考文献

多用方可熟练!!
https://haicoder.net/git/git-status.html
https://www.cnblogs.com/ygbh/p/17470075.html#_label3_0_2_0文章来源地址https://www.toymoban.com/news/detail-760171.html

到了这里,关于ardupilot开发 --- git 篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【无人机】PIXHAWK、PX4、APM区别

    PIXHAWK、PX4、APM APM固件 专为Arduupilot开发的固件,现也用于PIXHAWK。有ArduCopter社区支撑、开放,功能全、迭代升级快,适合直接用。由于有较多的历史兼容性需求,软件代码体系相对杂乱,还封装了PX4的内核,学习起来困难些。 PX4固件 专为PIXHAWK开发的固件。相对封闭,代码体

    2024年02月20日
    浏览(58)
  • px4+vio实现无人机室内定位

    文章主要讲述px4 如何利用vins_fusion里程计数据实现在室内定位功能。 文章基于以下软、硬件展开。 硬件 软件 机载电脑: Intel NUC 系统:Ubuntu 20.04 相机: Intel Realsense D435i ros:noetic 飞控:Pixhawk 2.4.8 固件:PX4 1.14.0 完整vins_to_mavros 功能包地址: https://github.com/rotorcraftman/px4ctr

    2024年02月03日
    浏览(48)
  • Ubuntu PX4无人机仿真环境配置

     目录 一、VM虚拟机安装ubuntu18.04   1、VMware安装   2、新建虚拟机 二、Ubuntu系统配置   1、更改软件安装源   2、安装中文输入法 三、PX4环境搭建   1、安装git   2、下载px4源码   3、安装ROS   4、安装MAVROS   5、安装QGC   6、仿真测试 四、其他工具安装   1、VScode安装      

    2024年02月02日
    浏览(189)
  • PX4学习笔记——无人机以及QGC操作

    官方教程链接:https://docs.qgroundcontrol.com/master/en/SetupView/SetupView.html 电脑先打开QGC,进入Vehicle Setup,点击Firmware。无人机飞控使用USB线连接电脑,然后选择烧录的.px4程序(可以是官方的,也可以是自己编译生成的)。 点击Airframe,如果无人机为四旋翼,则点击 Generic Quadcopter

    2024年02月11日
    浏览(46)
  • 【PX4-AutoPilot教程-TIPS】PX4控制无人机在Gazebo中飞行时由于视角跟随无人机在画面中心导致视角乱晃的解决方法

    无人机在Gazebo中飞行时,无人机始终处于画面中央,会带着视角乱晃,在Gazebo中进行任何操作视角都无法固定。 观察Gazebo左侧World栏GUI选项,发现有一个track_visual项,这个是Gazebo中的跟随视角,跟踪目标是无人机iris,但是手动点击无法取消,设置Gazebo使用FOLLOW选项跟随其他目

    2024年02月22日
    浏览(84)
  • 无人机仿真—PX4编译,gazebo仿真及简单off board控制模式下无人机起飞

    在上篇记录中,已经对整体的PX4仿真环境有了一定的了解,现如今就要开始对无人机进行起飞等仿真环境工作,在整体虚拟环境中如果程序能够安稳起飞降落,即可对无人机进行实飞操作。 需要做的是,通过PX4官网提供的基本程序包,在ROS工作空间下新建程序包对其进行运行

    2024年02月03日
    浏览(121)
  • ubuntu搭建PX4无人机仿真环境(4) —— 仿真环境搭建

    前言 在搭建之前,需要把 ROS、MAVROS、QGC 等基础环境安装配置完成。大家可以参考我之前的教程 本次安装是以 px4 v1.13.2 为例。 我的配置如下: 虚拟机 Ubuntu 18.04 (运行内存 4G、硬盘内存 80G) 、ROS melodic 、最新版 QGC 建议安装之前可以先看看这个 👉 ubuntu搭建PX4无人机仿真环境

    2024年02月15日
    浏览(76)
  • (最新)ubuntu搭建PX4无人机仿真环境(4) —— 仿真环境搭建

    前言 在搭建之前,需要把 ROS、MAVROS、QGC 等基础环境安装配置完成。大家可以参考我之前的教程 本次安装是以 px4 v1.13.2 为例。 我的配置如下: 虚拟机 Ubuntu 18.04 (运行内存 4G、硬盘内存 80G) 、ROS melodic 、最新版 QGC 建议安装之前可以先看看这个 👉 ubuntu搭建PX4无人机仿真环境

    2024年02月09日
    浏览(59)
  • (最新)ubuntu搭建PX4无人机仿真环境(2) —— MAVROS安装

    MAVROS是一个ROS(Robot Operating System)软件包 , 有了它就可以让ROS与飞控通信。这次安装是以ubuntu 18.04 (ROS Melodic)为例,也适用于其他版本 。安装之前确保 ROS 安装成功,没安装的可以看我仿真系列教程。 (注:安装方式有二进制安装和源码安装两种方式,源码安装需要从Git

    2024年02月09日
    浏览(61)
  • ROS-基于PX4的无人机SLAM建图(Cartographer)仿真

    首先在电脑上安装好Ubuntu系统和ROS系统,我安装的是Ubuntu18.04和ROS Melodic,不同的Ubuntu版本对应不同的ROS版本 ROS发布日期 ROS版本 停止支持日期 对应Ubuntu版本 2018年5月23日 ROS Melodic Morenia 2023年5月 Ubuntu 18.04 2016年5月23日 ROS Kinetic Kame 2021年4月 Ubuntu 16.04 (Xenial) Ubuntu 15.10 (Wily) 201

    2024年02月15日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包