【问题标题】:How do I synchronize master and origin/master using egit in eclipse?如何在 Eclipse 中使用 egit 同步 master 和 origin/master?
【发布时间】:2011-09-15 10:46:29
【问题描述】:

我创建了一个本地 git 存储库,并将更改从它推送到我创建的 gitosis 远程

git init my_git
git remote add origin git@server:my_git
... various adds and commits
git push origin master:refs/heads/master

现在,我在 Eclipse 中本地编辑和提交更改,当我提交时,我看到(使用 qgit)它将我的 master 分支移动到该版本。

但是,它也告诉我origin/master 是以前的版本。

git status 在命令行上向我显示一切都是最新的:

$ git status
# On branch master
nothing to commit (working directory clean)

我可以看到版本的差异

git diff origin/master

如果我在命令行上执行 git push,那么 qgit 会显示 origin/master 分支现在与我的 master 位于同一位置。

我不知道如何在 Eclipse 中配置“远程/推送”或“远程/配置推送到上游”对话框,以执行与命令行 git push 相同的操作,将 origin/master 移动到与master同级。

我总是必须执行命令行推送以使origin/mastermaster 出现在同一位置。

第一季度。谁能告诉我如何在eclipse中做到这一点?

第二季度。什么是git push的命令行版本做了eclipse版本不做的?

第三季度。我假设master 是我的本地 HEAD 指针,origin/master 是远程服务器对当前 HEAD 的看法是否正确?

【问题讨论】:

  • 当您从 Eclipse 推送时,gitolite 存储库中的 master 分支是否已更新?
  • 是的,它似乎已更新。我从 Eclipse 进行了推送,然后将 gitolite 存储库克隆到其他地方,我所做的更改在我的新克隆中。 origin/master 仍然设置为以前的版本,所以这告诉我推送正在工作并且origin/master 不是远程服务器的 HEAD。新的克隆在最新版本中具有“master”、“origin/master”,但在之前版本中具有“origin/origin/master”
  • 你在新克隆中有一个origin/origin/master,这表明你不小心将origin/master(而不仅仅是master)推送到gitolite存储库中的匹配名称.
  • 谢谢,看来我已经这样做了,现在我已经删除了远程 origin/origin/master,并将我的推送编辑为只做master

标签: eclipse git egit


【解决方案1】:

通过egit's documentation 的相关部分,您可以:

  • 单击“添加所有分支规范”按钮,将所有本地分支推送到远程存储库中具有相同名称的分支,或者
  • (更安全的选项)只需在“Source ref”和“Destination ref”下选择 master 即可仅推送您的 master 分支

远程跟踪分支origin/master 通常由git fetch 更新(这是git pull 所做的一部分),但是使用命令行 git,远程跟踪分支也是在成功推送到正在跟踪的远程存储库中的分支时更新。基于 git 的纯 Java 实现之一 JGit 而不是命令行工具的 Egit 可能不会以相同的方式在成功推送时更新 origin/master。如果是这种情况,您只需 do a fetch 即可更新 origin/master


更新:这似乎是 EGit(不是底层 JGit)中的一个已知错误 - 错误报告在这里:

【讨论】:

  • 太好了,抓取成功了。我想我明白为什么我现在必须在本地获取移动origin/master,这是一个功能还是一个错误?如果我是刚刚对其进行更改的人,我本来希望在本地知道远程主机在哪里,我必须在第二步中要求它的事实似乎很奇怪,而命令行正在做我做的事情d 更自然地期望发生。
  • 是的,我也希望如此,我会称之为错误。事实上,我刚刚在错误跟踪器中发现了这个:bugs.eclipse.org/bugs/show_bug.cgi?id=317411
【解决方案2】:

对此的更新,我使用的是 eclipse Helios,我已经升级到 Indigo,使用最新版本的 egit,并且修复似乎处于活动状态,因为我不再需要在推送后拉动。

【讨论】:

  • 嗯,我使用 Kepler 并在另一个磁盘分区上有本地 repo "L1" 和远程裸 repo "R1"。此外,我在笔式驱动器上制作了 R 的裸克隆“P”。在另一台计算机上,我制作了 P 的克隆“R2”,然后使用 repo“L2”将项目表格 R2 签出到 Eclipse 中。它基本上是在 pendrive 的帮助下在两台计算机之间交换更改并在两台计算机上进行裸备份的服务器。它看起来像这样:
猜你喜欢
  • 2020-07-12
  • 2013-09-25
  • 2012-05-22
  • 2011-02-22
  • 2012-01-31
  • 2013-08-10
  • 2012-09-27
相关资源
最近更新 更多