了解Eclipse中的git / eGit推/拉行为

时间:2013-03-04 11:41:01

标签: eclipse git egit

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

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

1 个答案:

答案 0 :(得分:1)

我将这个问题视为无效,因为我认为这是由于第二个本地回购的远程跟踪配置错误造成的。修复后,文件内容会在按预期拉动后更新。感谢大家的投入。

然而双方的提取/推送规格都没问题,远程跟踪不正确,即在[branch "my_branch"]部分的.git / config中我得到了第二个本地回购的错误merge规范所以这就是为什么拉不与我期望的本地分支合并的原因。


关于问题和修复的更多细节:就像我说的那样,fetch和push specs都没问题,但是当我在第二台机器上设置本地分支及其跟踪时,我肯定犯了一个错误。如果第一台机器是正确的。在.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分支上:我承诺并从第一台机器推入原点/ 1.3.0-devel,但因为在第二台1.3.0-devel没有track 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