首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌回购为何同步进入无头状态?

谷歌回购为何同步进入无头状态?
EN

Stack Overflow用户
提问于 2018-05-04 20:39:57
回答 2查看 1.5K关注 0票数 2

因此,在manifest.xml中,您可以为项目指定一个修订版,比如项目foo的修订母版。然后你

代码语言:javascript
复制
repo sync

并下载项目foo的主分支。但它并没有真正检查那个分支。相反,它使你处于无头状态,不知何故从主人开始.?这似乎相当麻烦,如果我的意图是实际工作的同步项目。

我知道它可以很容易地被“修复”,但是由于它看起来非常违背直觉,我猜他们有一个相当好的理由让你在默认的情况下处于无头状态。在我偏离工作流程之前,我想了解它,所以有人能解释它吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-05 03:31:48

“无头状态”在Git中称为detached HEAD

在清单(例如,.repo/manifest.xml)中,我们可以看到每个项目都有revision。它可以是提交(40a264de45eb035c67aa32d73c767ed7d9378ba2)、标记(refs/tags/v1.0)、分支(refs/heads/mastermaster)或任何有效的git (refs/changes/11/22211/1)。

repo sync克隆将repos裸到$coderoot/.repo/projects/$coderoot/.repo/project-objects,在裸repos中调用git rev-parse以获得revision的提交,然后在$coderoot/下的repos中调用git checkout,这通常会导致头分离。见project.py

注意,这两个命令是在两个repos中调用的。假设$coderoot/.repo/project/foo.git中有一个分支master$coderoot/foo/中也有一个分支master。这两个masters可能指向不同的提交,并记住它允许在现有目录中运行repo syncgit checkout master in $coderoot/foo/将提取错误的代码。分支名称是不可信的,提交是可信的。这就是为什么repo sync总是签出提交而不是分支的原因。

票数 2
EN

Stack Overflow用户

发布于 2020-06-18 21:06:22

下载大量的repos的能力是很棒的。然而,我发现目前的行为非常有限。假设一个回购林有大量相关的repos,每一个都有各自版本的分支名称: master-1,master-2,等等。

现在,在运行回购同步之后,您就拥有了头分离情况下的所有repos。是否有一个选项将签出清单文件中指定的分支,即检查同名的现有分支是否正在跟踪远程分支,或者仅由i.e创建的本地分支没有跟踪远程。

例g.1:回购-1主分支是主-1,有跟踪分支-1 e.g.2:回购-2主分支是主-2,本地分支-2不跟踪远程分支。

在上面的示例中,脚本将在主-1分支中显示repo-1,而repo-2处于头分离状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50182758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档