1

我有一个 Git 存储库和 Gerrit 审查运行在此之上。我在这个 repo 上拥有 Push/Push Merge Commit 权限(这意味着我可以绕过 Gerrit Review 并直接合并代码,就好像 Gerrit 不存在一样)。

作为日常活动的一部分,我merged将一个已完成的主题(在 Gerrit 中通过并批准)提交给我的主人

git merge master-b734912

Updating 08f272e..d265243 这一步意味着我HEAD在 SHA-1 上的本地/主服务器按预期08f272e快速转发到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带有 commit-id 的分支,如预期的那样。

从上面我得出结论......不知何故,本地HEAD没有更新git pull,每次推送后都会使其不同步。

每次完成后都克隆一个新的 repo 有点不方便PUSH

任何建议。

最近我也提出了这个问题。我相信这个问题与这个问题有一些联系。

4

1 回答 1

0

好的,我在这里回答我自己的问题。

在我看来,可能发生的事情是指向远程存储库的链接(对远程存储库的引用,即做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...在这种情况下,我正在研究大师,为此我得到了

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)

于 2013-07-10T20:45:15.820 回答