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 概念——我可能只是错过了一些东西。所以...
编辑:为了解决 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 配置时,它是空白的。
要添加到 VonC 的答案中,这意味着当我使用 EGit 配置它时,我最初为 git repo 配置遥控器时错过了一个步骤。由于我没有为 repo 配置 fetch,Eclipse 给了我错误“Nothing to fetch” - 也许它应该给我一个更有意义的错误,比如“没有为这个存储库配置获取。要配置,你必须。 ..”也许我会在稍后解决这个问题,因为 EGit 是开源的。
要在 Eclipse (EGit) 中修复此问题,请执行以下操作:



refs/heads/*(尽管“Not found in remote repository”消息。选择Next。

refs/remotes/origin/*已填写(它可能会自动填充)。确保选中更新本地存储库,即使数据可能丢失。单击完成。

+refs/heads/*:refs/remotes/origin/*. 这与 .gitconfig 文件中的内容相匹配。

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