我有一个Git存储库,Gerrit审查运行在此之上。我在这个repo上有Push/Push-Merge-Commit权限(这意味着我可以绕过Gerrit审查并直接合并代码,就好像Gerrit不存在一样)。
作为日常活动的一部分,我将一个完成的主题(在Gerrit中通过并批准)merged
输入我的主
git merge master-b734912
Updating 08f272e..d265243
此步骤意味着我在SHA-1 08f272e
上的本地/主HEAD
快速转发到d265243
,这是预期的
Fast-forward
然后是push
,将我的本地与远程同步
git push gerrit:projectname master
"gerrit:"别名在我的用户配置文件的ssh配置中定义
我从遥控器/主控器撤回以确保所有内容都处于同步
我得到的git pull gerrit:projectname master
From gerrit:crs2awips
* branch master -> FETCH_HEAD
Already up-to-date.
然而,git log --graph --oneline master
显示了具有新提交的更新树作为预期
* d265243 git commit message 2
* 08f272e git commit message 1
而git log --graph --oneline origin/master
仍然显示合并前的最后一次提交。
* 08f272e git commit message 1'
更令人惊讶的是,Gerrit Review Web UI显示远程已更新提交
此外,现在克隆存储库将具有一个master
分支,该分支具有预期的提交id
根据以上内容,我得出结论。。。以某种方式本地CCD_ 15在CCD_。
每次在完成PUSH
之后克隆新的repo有点不方便。
任何建议。
最近我也提出了这个问题。我认为这个问题与这个问题有某种联系。
好的,我在这里回答我自己的问题。
在我看来,可能发生的情况是,到远程的链接(对远程存储库的引用,即git branch -a
。以"remotes/*"开头的分支是我在这里所指的)由于某种原因仍然"过时",我不理解。
在我建议快速检查之前,请尝试以下步骤:
git status
应抛出消息
# On branch master
# Your branch is ahead of 'origin/master' by X commit(s).
#
blah blah blah...
当我看到这个消息时,我的本能是做一个push
git push remote master
。。。在这种情况下,我正在研究master,为此我获得了
Everything up-to-date
可能会让人困惑,我去做了一个git status
,同样的消息再次出现:
# On branch master
# Your branch is ahead of 'origin/master' by X commit(s).
#
blah blah blah...
使用push -f
选项并检查git status
以查看消息是否消失。
如果你仍然收到同样令人困惑(但正确)的消息,你可能会怀疑你的遥控器。
一个相关问题中的一条评论为我指明了正确的方向。
在此列出步骤:
git remote -v
抛出输出
origin gerrit:project (fetch)
origin gerrit:project (push)
从gitref在这里添加您的遥控器并删除原始
git remote add gerrit gerrit:project
git remote rm origin
git remote -v
,应显示以下内容:
gerrit gerrit:project (fetch)
gerrit gerrit:project (push)
现在按照以下进行push -f
git push -f gerrit master
可能会产生Everything up-to-date
。。。但这一次它真的很重要;-)
在git status
上接收
# On branch master
nothing to commit (working directory clean)