我习惯于在单个存储库中使用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工作流程。
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之前审查它。老实说,我对repo和Gerrit仍然有一个非常抽象的理解。
发布于 2013-01-27 15:11:54
从技术上讲,如果你这样做
git checkout origin/master你会立即进入独立的头部状态。
不管是好是坏,这正是repo sync在默认情况下所做的事情--在刷新repo sync之后,清单中列出的每个存储库都处于分离的头部状态。
分离的头对于repo来说是完全正常的状态-如果源/主节点向前移动,repo sync也会移动你的本地状态(有效地,它再次执行git checkout origin/master )。
但是,如果您想要进行自己的更改并将其推向上游,这种奇怪的状态并不好。在这种情况下,您可以执行以下操作之一:
repo start master .这意味着在当前项目(.)中开始跟踪名为master的分支。
或者,您可以使用(实际上,我更喜欢这样):
git checkout --track origin/master这两种方法将给你几乎相同的结果:你将不再处于分离的头状态,而是在跟踪远程分支的本地分支上。
此时,您可以进行本地提交,并使用标准git push将它们直接推送到上游(但这可能是服务器策略不允许的),或者您可以提交以进行Gerrit代码审查(强烈推荐,这是大多数安卓商店的默认选择)。一旦跟踪分支就位,提交到Gerrit就像这样简单
repo upload # upload changes in multiple repositories at once或
repo upload . # upload changes in current git repo only, fast!(这假设您的清单包含正确的审查服务器设置)。
https://stackoverflow.com/questions/14540262
复制相似问题