如果开发功能花费了一段时间,而你想要跟上当前 Home Assistant 的dev分支的进度,可以使用git rebase。这将在本地拉取最新的 Home Assistant 更改,回退你的提交,引入 Home Assistant 的最新更改,并在顶部重新应用你的所有提交。
# 从你的功能分支运行此命令
$ git fetch upstream dev # 将最新更改拉取到本地dev分支
$ git rebase upstream/dev # 在你的更改之前将那些更改放入你的功能分支
如果rebase检测到冲突,则重复此过程,直到所有更改都已解决:
git status会显示有冲突的文件;编辑该文件并解决<<< | >>>>之间的行。
添加修改后的文件:git add <file>或git add.。
继续rebase:git rebase --continue。
重复直到解决所有冲突。
在对你的分支进行rebase之后,相对于你的 GitHub 分支,你将重写历史记录。当你尝试推送时,你会看到一个错误,提示你的历史记录与原始分支有分歧。为了使你的 GitHub 分支与你的本地分支保持同步,你需要强制推送,使用以下命令:
# 从你的功能分支运行此命令
$ git push origin --force
其他工作流程在 Github 文档中有详细介绍。在克隆你的分支后添加一个额外的remote。
$ git remote add upstream https://github.com/home-assistant/home-assistant.git
然后,git pull --rebase upstream dev。
总结
主要介绍了在 Home Assistant 开发过程中,当开发者的功能开发周期较长,需要与项目dev分支保持同步时的操作方法。核心是使用git rebase命令,它分两步操作,先git fetch upstream dev获取最新更改到本地dev分支,再git rebase upstream/dev将这些更改整合到自己的功能分支。若出现冲突,通过git status查看冲突文件,编辑解决后git add添加文件,再git rebase --continue继续rebase操作,直到冲突全部解决。完成rebase后,由于历史记录重写,推送时需git push origin --force强制推送使 GitHub 分支与本地同步。此外还提及了其他相关工作流程可参考 Github 文档,以及添加remote的操作,为开发者在长期开发过程中同步代码提供了清晰的指导,有助于避免因分支差异导致的开发问题,确保代码能及时跟进项目整体进度。
1362

被折叠的 条评论
为什么被折叠?



