git clone获取HEAD但git pull在Gerrit Repo上的Merge Push操作之后无法获取最新的HEAD

时间:2013-07-10 17:57:38

标签: git gerrit

我有一个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问题。我认为这个问题与这个问题有一些联系。

1 个答案:

答案 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)