如何在eclipse中使用egit同步master和origin/master?

Mar*_*her 7 eclipse git egit

我创建了一个本地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
Run Code Online (Sandbox Code Playgroud)

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

但是,它也向我展示origin/master了以前的版本.

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

$ git status
# On branch master
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)

我可以看到版本的差异

git diff origin/master
Run Code Online (Sandbox Code Playgroud)

如果我git push在我的命令行上,那么qgit告诉我origin/master分支现在和我的分支在同一个地方master.

我无法弄清楚如何在eclipse中配置"远程/推送"或"远程/配置推送到上游"对话框来执行与命令行相同的操作,git push以将其移动origin/master到与...相同的级别master.

我总是要做命令行推送,以使得origin/master到达同一个地方master.

Q1.任何人都可以告诉我如何在日食中做到这一点?

Q2.git pusheclipse版本没有做的命令行版本是什么?

Q3.我的假设master是我的本地HEAD指针,并且origin/master远程服务器的当前HEAD视图是否正确?

Mar*_*air 2

根据egit 文档的相关部分,您可以:

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

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


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