重定向:保持代码最新

../_images/git-rebase.png

在您开发的过程中,ArduPilot 的主分支很可能会被其他开发人员的 "提交 "所更新。您应该 及时更新当地分支机构和分叉点的信息 以便您使用最新的代码,也便于维护者最终将您的更改合并到 ArduPilot 的主分支。

尤其是,最好将本地 repo 和分叉 repo 的主分支与 ArduPilot 的主分支保持同步。

"重定向 "允许你从 ArduPilot 的主分支更新一个分支,然后重新应用你对该分支所做的任何更改。

../_images/git-rebase2.png

以下命令可直接输入 Linux/OSX 终端,如果使用 Windows,则可启动 "Git Shell "或 "Git Bash "工具。 安装.

  1. 导航至您的 ardupilot git 仓库。

    CD <;ardupilot->;
    
  2. 从这里开始,我们将假定你想在 ArduPilot 主分支上重置你的主题分支。此过程与主分支相同,只需将 topic-branch 替换为 master。请确保您正在查看的是主分支或您要重定向的分支。

    git 销售点 主题-分支机构
    git 子模组 更新 --启动 --递归
    

    如果您想创建一个新分支,并在 ArduPilot 主分支的基础上重新构建、

    git 销售点 -b 主题-分支机构
    git 子模组 更新 --启动 --递归
    
  3. 确保你的版本库连接到你分叉而来的上游版本库。

    git 远程 增加 上游部门 https://github./ArduPilot/ardupilot.git
    
  4. 从上游版本库中获取变更(这只是将变更下载到本地缓存中,不会以任何方式覆盖或修改你的变更)。如果要在自己分叉的主干分支上重定向分支,请用 origin 代替 upstream

    git 取得 上游部门
    git 子模组 更新 --启动 --递归
    
  5. 从上游的主分支重置当前分支。

    git  上游部门/
    
  6. 初始化并更新本地软件仓库的子模块

    git 子模组 更新 --启动 --递归
    
  7. 检查重置是否成功。使用 cmdline (git 登录 --在线 --装饰 --全部 --图 键入 q 退出)或 Gitk、sourcetree 等图形用户界面工具。您的提交应该出现在 ArduPilot 主控最新提交的顶部,如上图所示。

  8. 现在将更新的分支推送到你的 github 仓库

    git 推动 产地 主题-分支机构
    

当事情出错时

上述重置步骤(第 5 步)可能会因为一些原因而失败:

  • 本地版本分支中的文件有未提交的更改。阶段并提交这些更改,然后再试一次。

  • 存在合并冲突,即另一位开发人员修改了与你的新提交相同的代码行。有两种选择

  • 中止重置,将分支恢复到重置前的状态、 git --中止.如果您愿意在本地版本的分支中丢弃新提交的内容,可以使用以下方法 "重置 "您的分支,使其与上游主版本一模一样 git 重置 --硬 上游/主站.

  • 使用合并工具,如 TortoiseGit 解决合并冲突,然后使用 git --继续

如果添加了新的子模块,子模块更新(步骤 6)有时会失败。 git 子模组 启动 通常可以解决这个问题。

如果您的系统出现以下情况,上述推送步骤(步骤 7)可能会失败 分叉的分支已经更新过。您可以使用 git 推动 -f 会覆盖你的 github 分支,使其看起来像本地版本库的分支。如果远程版本库中不存在主题分支,它也会失败。在这种情况下,使用

git 推动 -u 产地 主题-分支机构

在那里创建分支,并让本地主题分支跟踪它。