3

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

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

4

1 回答 1

1

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

但是,双方的 fetch/push 规范都还可以,远程跟踪不正确,即在 .git/config[branch "my_branch"]部分中,我为第二个本地 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,它是不同的)

于 2013-03-04T13:14:24.520 回答