我有一个Git存储库,Gerrit审核运行在此之上。我对此repo具有推送/推送合并提交权限(这意味着我可以绕过Gerrit Review并直接合并代码,就像Gerrit不存在一样)。
作为日常活动的一部分,我merged
完成了一个主题(在Gerrit中通过并批准)到我的主人
git merge master-b734912
Updating 08f272e..d265243
此步骤表示SHA-1 HEAD
上的本地/主人08f272e
已快速转发至d265243
,这是预期的 < / p>
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
分支,其中包含commit-id。
从上面我得出结论......在HEAD
之后,本地git pull
不会更新,并且在每次推送后都会使其失去同步。
在PUSH
完成后,每次克隆一个新的回购都很不方便。
任何建议。
最近我还提出了this问题。我认为这个问题与这个问题有一些联系。
答案 0 :(得分:0)
好的我在这里回答我自己的问题。
在我看来,可能发生的事情是指向遥控器的链接(对远程存储库的引用,即做git branch -a
。以“遥控器/ *”开头的分支是我在这里所指的那些)仍然是“陈旧的”某些原因我不明白。
在我作为快速检查的建议之前,请尝试以下步骤:
git status
应该抛出消息
# On branch master
# Your branch is ahead of 'origin/master' by X commit(s).
#
blah blah blah...
当我看到此消息时,我的本能就是做push
git push remote 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
以查看该消息是否消失。
如果您仍然收到同样令人困惑(但正确)的消息,您可能会怀疑您的遥控器。
related question中的一条评论指出了我正确的方向。
列出这里的步骤:
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)