red*_*bmk 10 git android github repository gerrit
我习惯使用git单个存储库.但是,我最近一直在涉及Android开发,我正试图解决这个问题repo.我已经通过在.repo/local_manifests目录中创建xmls来设置一些自定义git repos (我正在使用repo 1.19)并且repo sync工作正常.
当我查看自定义git repos时,他们说# 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
Run Code Online (Sandbox Code Playgroud)
既然我不再在技术上分支,我怎么能推动变化?我知道有一个工具,repo upload但我不确定它是如何工作的.我从未使用过Gerrit,但也许值得设置,以便其他团队成员可以在将代码推送到Github之前查看代码.老实说,我仍然有一个非常抽象的理解repo和Gerrit.
mvp*_*mvp 14
从技术上讲,如果你这样做
git checkout origin/master
Run Code Online (Sandbox Code Playgroud)
你马上进入了独立的HEAD状态.
无论好坏,这正是repo sync默认情况下的做法- 这样清单中列出的每个存储库在新鲜之后都处于分离的HEAD状态repo sync.
分离的HEAD是完全正常的状态repo- 如果origin/master向前移动,repo sync也将移动您的本地状态(实际上它git checkout origin/master再次移动).
但是,如果您想进行自己的更改并将其推向上游,这种奇怪的状态并不好.在这种情况下,您可以执行以下操作之一:
repo start master .
Run Code Online (Sandbox Code Playgroud)
这意味着开始跟踪master在当前项目(.)中调用的分支.
或者,你可以使用(我更喜欢这个,实际上):
git checkout --track origin/master
Run Code Online (Sandbox Code Playgroud)
这两种方法都会给你几乎相同的结果:你不再处于分离的HEAD状态,而是在跟踪远程分支的本地分支上.
此时,您可以使用标准进行本地提交并直接将其推送到上游git push(但服务器策略可能不允许这样做),或者您可以提交Gerrit代码审核(强烈推荐并且是大多数Android商店的默认选择).一旦跟踪分支到位,提交给Gerrit就像一样简单
repo upload # upload changes in multiple repositories at once
Run Code Online (Sandbox Code Playgroud)
要么
repo upload . # upload changes in current git repo only, fast!
Run Code Online (Sandbox Code Playgroud)
(这假设您的清单包含审阅服务器的正确设置).