EGit:发出快进拉取 ~ 如何在 EGit 中为远程存储库配置提取

Mic*_*utz 2 eclipse git git-pull egit

所以让我设置我的场景。我在 Spring Tool Suite (Eclipse 4.5.1) 中使用 EGit 4.1.1。我和我精通技术的同事从远程 URL 克隆了相同的 git 存储库。我精通技术的同事更喜欢命令行,他使用 VIM 修改文件,然后发出命令

git add .
git commit -m "Modified file"
git push
Run Code Online (Sandbox Code Playgroud)

现在更改位于远程存储库中。现在,我不太喜欢 CLI,更喜欢 GUI,我在 Eclipse 中使用 EGit。要接收更改,我右键单击该项目(我最初是使用 EGit 克隆的),转到 Team -> Pull,然后我被告知有“ Nothing to fetch ”。出于理智的考虑,我打开了“Git Reflog”视图,我看到我同事的更改没有列出,我开始挠头。

所以我转到命令行并发出命令git pull,瞧!,它拉入了我的同事更改:

remote: Counting objects: 27, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 14 (delta 4), reused 0 (delta 0)
Unpacking objects: 100% (14/14), done.
From git://hostname.domain.com/git-repo
 * branch            master     -> FETCH_HEAD
Updating 123ae12..68cd2f0
Fast-forward
Run Code Online (Sandbox Code Playgroud)

更好的是,我回到 Eclipse,我看到“Git Reflog”视图中的更改,列为

Commit   Commit Message     Date         Reflog Message
---------------------------------------------------------------
68cd2f0  Modified File      2015-12-23   pull: Fast-forward
Run Code Online (Sandbox Code Playgroud)

所以,我觉得我在这里被告知的事情让我相信有一个我不熟悉的 Git 概念——我可能只是错过了一些东西。所以...

  • 关于 git 的工作,我在这里遗漏了什么明显的东西吗?
  • 我假设快进意味着我只是在同一个分支中向前移动我的头
  • 如何在 Eclipse 中完成这个命令行“git pull”?

编辑:为了解决 VonC 的答案,我添加了此信息,这些信息既是更多信息,也是此问题的解决方案。

从命令行,当我运行(从存储库)时cat ./.git/.gitconfig,我得到以下输出:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
[remote "origin"]
        url = git://hostname.domain.com/git-repo.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
Run Code Online (Sandbox Code Playgroud)

但是,当我进入 Eclipse 并查看 fetch 配置时,它是空白的。

Mic*_*utz 5

要添加到 VonC 的答案中,这意味着当我使用 EGit 配置它时,我最初为 git repo 配置遥控器时错过了一个步骤。由于我没有为 repo 配置 fetch,Eclipse 给了我错误“Nothing to fetch” - 也许它应该给我一个更有意义的错误,比如“没有为这个存储库配置获取。要配置,你必须。 ..”也许我会在稍后解决这个问题,因为 EGit 是开源的。

在 Eclipse (EGit) 中修复此问题,请执行以下操作:

  1. 确保Git Repositories视图已打开。
  2. 选择特定的 git repo,并展开它,直到展开remotes 中的特定遥控EGit 存储库:选择远程
  3. 右键单击传入源并选择配置提取 EGit 远程:配置获取
  4. 在对话框中,如果您根本没有看到任何提取配置,请选择Ref Mappings窗格 旁边的AddEGit 配置获取:添加引用
  5. 在对话框中,对于Source,键入refs/heads/*(尽管“Not found in remote repository”消息。选择NextEGit 添加参考:选择源
  6. 对于Destination,请确保refs/remotes/origin/*已填写(它可能会自动填充)。确保选中更新本地存储库,即使数据可能丢失。单击完成EGit 添加参考:选择目的地
  7. 现在在您的配置提取对话框中,您将看到新的 ref 映射:+refs/heads/*:refs/remotes/origin/*. 这与 .gitconfig 文件中的内容相匹配。 EGit 配置获取:已添加参考
  8. 现在,如果您打算稍后提取,请单击“保存”,如果您希望更新本地存储库,请单击“保存并提取”

我不完全确定为什么 EGit 没有自动执行此操作,也许这是另一天的问题。