repo start和git checkout -b之间的区别

7

正在进行Android内核的工作。我非常熟悉git,但对repo并不是特别熟悉,因此我阅读了以下文档:http://source.android.com/source/version-control.html。根据我的理解以及通过主题分支进行的实验,repo start BRANCH_NAMEgit checkout -b BRANCH_NAME相同。我的理解正确吗?还是我遗漏了一些微妙而重要的细节?

2个回答

6
区别在于 repo start 会在 .git/config 文件中设置您的分支的远程和合并属性:
[branch "YOUR_BRANCH_HERE"]
    remote = aosp
    merge = master

没有这些信息,repo 在你运行 repo upload 时就不会知道如何正确地上传你的更改,它会像你的新分支根本不存在一样处理。
(还有一些逻辑可以让你使用 --all 同时为 repo 中每个项目创建新分支,但那只是一个方便之举。)

3
看着 repo start 的 start.py 源代码,我认为主要的区别在于管理包含在 Android 项目中的清单文件

从清单中指定的修订版本开始,启动一个新的开发分支。


补充一下Trevor Johns答案,如果你没有使用 repo start,你需要检查 "如何使现有的 Git 分支跟踪一个远程分支?"。
git checkout -b newBranch -t aosp/master

这将在与新分支相关联的配置中设置远程和合并 (-t = "track")。

一个简单的 git checkout -b 不会设置任何东西,并创建一个纯本地分支(不跟踪任何上游分支到远程存储库)。


感谢您的回复,VonC,我想必定有两者之间有所不同。 - Brent Hronik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接