【问题标题】:Understanding git/eGit push/pull behaviour in Eclipse了解 Eclipse 中的 git/eGit 推/拉行为
【发布时间】:2013-03-04 11:41:00
【问题描述】:

假设存在两个远程存储库的签出。当从第一个本地 repo 提交/推送 eGit,然后从第二个本地 repo 拉取时,eGit 会显示一个对话框,确认正在拉取的提交,但在编辑器中,更改的文件内容不会更新。

我的理解是 git pull 也会进行合并,因此应该更新工作目录中的文件。这是不正确的吗?我需要在 Eclipse eGit 中执行哪些额外步骤才能使文件更新内容。

【问题讨论】:

  • 有冲突吗?因为在这种情况下,未冲突的文件将被暂存。见stackoverflow.com/a/12708545/6309
  • 无冲突。这是最简单的无冲突快进获取/合并案例。
  • 第二个 repo 在 EGit 的右分支上?您确实在eclipsesource.com/blogs/2011/05/29/… 中看到了 HEAD 吗?您不是处于 DETACHED HEAD 状态吗?
  • 当我在命令行上执行git pull origin my_remote_branch 时,文件内容会更新。我想知道如何让 Eclipse eGit 更新文件内容。获取规范是 +refs/heads/*:refs/remotes/origin/* 和推送规范是 refs/heads/my_branch:refs/heads/my_branch 在两个本地人。
  • 不,我不认为这是一个超然的情况。在历史视图中,对于我的最后一次提交,我看到一行以 my_branch origin/my_branch FETCH_HEAD HEAD 开头。

标签: eclipse git egit


【解决方案1】:

我认为这个问题是无效的,因为我认为这是由于第二个本地 repo 上的远程跟踪配置错误。修复后,文件内容按预期在拉取后更新。谢谢大家的意见。

但是,双方的 fetch/push 规范都可以,远程跟踪不正确,即在 [branch "my_branch"] 部分的 .git/config 中,我为第二个本地 repo 得到了错误的 merge 规范,这就是为什么 pull 没有'不要与我期望的本地分支合并。


关于问题和修复的更多细节:就像我说的,获取和推送规范都可以,但是当我在第二台机器上设置本地分支和跟踪时,我一定犯了一个错误。在第一台机器的情况下,它是正确的。在.git/config我看到了

[branch "master"]
        remote = origin
        merge = refs/heads/master
[branch "1.3.0"]
        remote = origin
        merge = refs/heads/1.3.0
[branch "1.3.0-devel"]
        remote = origin
        merge = refs/heads/1.3.0-devel

但是,在第二台机器上,我可能错误地输入了创建分支和设置跟踪的命令,因此在 git branch -t my_branch_1 origin/my_branch_1 中重复了多个分支,所有这些分支我都想跟踪具有相同名称的远程分支,分支名称确实如此不匹配所以我最终得到了类似这样的配置

[branch "master"]
        remote = origin
        merge = refs/heads/1.3.0-devel
[branch "1.3.0"]
        remote = origin
        merge = refs/heads/master
[branch "1.3.0-devel"]
        remote = origin
        merge = refs/heads/1.3.0

我在问题中提到的事务发生在 1.3.0-devel 分支上:我从第一台机器提交并推送到 origin/1.3.0-devel,但是因为在第二台 1.3.0-devel 没有跟踪 origin/1.3.0-devel,pull 没有与当前签出的 1.3.0-devel 本地分支合并。

我通过发出命令git branch --set-upstream 1.3.0-devel origin/1.3.0-devel 并为所有其他分支重复此操作来解决此问题。 (注意,这是 git 版本 1.7.x。对于 1.8.x,它是 different

【讨论】:

  • 您能否详细说明错误的配置,并将其与正确的配置进行比较,以便其他人从中受益?
猜你喜欢
  • 2012-12-28
  • 1970-01-01
  • 2015-01-27
  • 2012-08-31
  • 2011-10-23
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多