首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git push是如何与android的repo工具协同工作的?

git push是如何与android的repo工具协同工作的?
EN

Stack Overflow用户
提问于 2013-01-27 02:42:51
回答 1查看 10.5K关注 0票数 13

我习惯于在单个存储库中使用git。然而,我最近一直在涉足安卓开发,并试图将我的大脑包裹在repo上。我已经通过在.repo/local_manifests目录中创建xmls (我使用的是repo 1.19)设置了一些自定义的git代码库,repo sync运行得很好。

当我查看自定义的git代码库时,他们会说# Not currently on any branch.,这看起来就像我使用git checkout abcd1234 (签出提交abcd1234)而不是git checkout origin/master这样的命令时一样。至于如何进行更改,我不确定如何推送回原点。这是我正常的git工作流程。

代码语言:javascript
复制
git checkout origin/master
#make changes to working directory
git add .
git commit -m 'useful message'
#assume time has passed and there could be changes upstream
git fetch
git rebase origin/master
git push origin master

现在,从技术上讲,我不再属于分支,我如何才能推动更改?我知道有一个工具repo upload,但我不太确定它是如何工作的。我从未使用过Gerrit,但也许设置它是值得的,这样其他团队成员就可以在代码被推送到Github之前审查它。老实说,我对repoGerrit仍然有一个非常抽象的理解。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-27 15:11:54

从技术上讲,如果你这样做

代码语言:javascript
复制
git checkout origin/master

你会立即进入独立的头部状态。

不管是好是坏,这正是repo sync在默认情况下所做的事情--在刷新repo sync之后,清单中列出的每个存储库都处于分离的头部状态。

分离的头对于repo来说是完全正常的状态-如果源/主节点向前移动,repo sync也会移动你的本地状态(有效地,它再次执行git checkout origin/master )。

但是,如果您想要进行自己的更改并将其推向上游,这种奇怪的状态并不好。在这种情况下,您可以执行以下操作之一:

代码语言:javascript
复制
repo start master .

这意味着在当前项目(.)中开始跟踪名为master的分支。

或者,您可以使用(实际上,我更喜欢这样):

代码语言:javascript
复制
git checkout --track origin/master

这两种方法将给你几乎相同的结果:你将不再处于分离的头状态,而是在跟踪远程分支的本地分支上。

此时,您可以进行本地提交,并使用标准git push将它们直接推送到上游(但这可能是服务器策略不允许的),或者您可以提交以进行Gerrit代码审查(强烈推荐,这是大多数安卓商店的默认选择)。一旦跟踪分支就位,提交到Gerrit就像这样简单

代码语言:javascript
复制
repo upload     # upload changes in multiple repositories at once

代码语言:javascript
复制
repo upload .   # upload changes in current git repo only, fast!

(这假设您的清单包含正确的审查服务器设置)。

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

https://stackoverflow.com/questions/14540262

复制
相关文章

相似问题

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