我很难理解repo
和git
。我创建了一个分支manifest.xml
文件,指定<default revision="project/master"… />
一切正常但当repo sync
完成时,没有迹象表明每个项目都在该分支上。每个项目中git branch
表示您不在分支机构。但是,如果您运行gitk
,则可以看到您处于正确的版本。
repo checkout project/master
表示没有任何项目定义了此分支。项目目录中git checkout project/master
的输出看起来像是创建了一个新分支。
如果我git clone project; git checkout project/master
,那么一切都如预期的那样。
问题:
repo
正在做什么有什么不同?
我正在尝试定义一个&#34; new&#34;我们项目的主分支。即使repo
和git
没有表明这一点,我真的在那个分支上吗?
请帮助我理解,这样我才能放心......
TIA
答案 0 :(得分:2)
这是预期的。 Repo不会为清单中列出的远程分支创建本地分支。您可以使用repo start
创建一个本地分支(或者repo start
只是一个包装器的等效底层Git命令)。 Repo只检查清单指向的提交,创建一个分离的头。
在Git中,远程分支机构无法检查工作。所有工作(即所有变更)都在当地分支机构进行。你跑的时候
git clone project
cd project
git checkout project/master
最后一个命令的字面含义是&#34;检查与项目/主模式匹配的分支,在匹配的远程分支的情况下,将使其作为分离的头部检出&#34; ,但Git做了它认为你实际上意味着什么
git checkout project/master origin/project/master
根据origin / project / master远程分支创建本地分支项目/ master。
Repo的行为可能看起来很奇怪,但预期的工作流程是为您正在处理的每件小事创建主题分支。 Repo不知道你在特定的git中会做什么(如果有的话),所以为你创建分支会是冒昧的。
另外,请记住,清单并不一定指向分支。 revision属性可以指向标签甚至是SHA-1,为它们创建本地分支也没有意义。
答案 1 :(得分:0)
虽然 var searchResponse = client.Search<Data>(s => s
.Index("my-data")
.Sort(so => so
.Ascending(f => f.DeviceCode.Suffix("keyword_lowercase"))
)
);
必须在每个 git repo 上使用相同的分支名称,但它不适用于具有不同 repo start <branch_name> --all
(远程分支)的 manifest。
我使用 revision
从这个 post 找到了一个很好的解决方案。
您可以使用以下流程来确保每个子 git repo 不处于无头状态并使用同一分支进行跟踪。
repo forall
您可以查看 repo forall 页的环境变量定义。