EGit:发出快进拉动〜如何在 EGit 中配置远程存储库的提取
EGit: Issuing a fast-forward pull ~ How to configure fetch for a remote repository in EGit
所以让我设置我的场景。我在 Spring 工具套件 (Eclipse 4.5.1) 中使用 EGit 4.1.1。我和精通技术的同事从远程 URL 克隆了相同的 git 存储库。我的技术娴熟的同事更喜欢命令行,他使用 VIM 进行文件修改,然后发出命令
git add .
git commit -m "Modified file"
git push
现在更改在远程存储库中。现在,我不太喜欢 CLI,更喜欢 GUI,我在 Eclipse 中使用 EGit。要接收更改,我右键单击项目(我最初使用 EGit 克隆的项目),转到团队 -> 拉,我被告知有“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
更好的是,我回到 Eclipse,我在 "Git Reflog" 视图中看到了变化,列为
Commit Commit Message Date Reflog Message
---------------------------------------------------------------
68cd2f0 Modified File 2015-12-23 pull: Fast-forward
所以,我觉得这里告诉我的内容让我相信有一个我不熟悉的 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
但是,当我进入 Eclipse 并查看获取配置时,它是空白的。
首先,reflog 在 获取之前不会向您显示任何内容(在命令行或 Eclipse 中):它记录来自 local 仅限克隆。
其次,check your .gitconfig
to see how the remote origin is configured (also seen here).
你需要有一行来获取:
fetch = +refs/heads/*:refs/remotes/origin/*
默认情况下,命令行 git fetch
将使用当前分支:
refs/heads/<head>:refs/heads/<branch>
添加到 VonC 的答案中,这意味着 我在使用 E[= 时最初为 git 存储库配置遥控器时错过了一个步骤 80=] 来配置它。因为我没有为 repo 配置 fetch,Eclipse 给我错误 "Nothing to fetch" - 也许它应该给我一个更有意义的错误,比如 "Fetch not configured for this repository. To configure, you must..." 也许我稍后会修复它,因为 E Git 是开源的。
要在 Eclipse (EGit) 中解决此问题,请执行以下操作:
- 确保Git 存储库 视图已打开。
- Select 特定的 git 仓库,并扩展它直到 remotes 中的特定远程被扩展:
- 右键单击 incoming 来源并选择 Configure Fetch
- 在对话框中,如果您看到根本没有配置提取,请在 Ref Mappings 窗格旁边 select Add
- 在对话框中,对于 Source,键入
refs/heads/*
(尽管有 "Not found in remote repository" 消息。Select Next。
- 对于目的地,确保填写
refs/remotes/origin/*
(可能auto-populate)。确保选中 即使数据可能丢失也更新本地存储库。单击 完成 。
- 现在,在您的 Configure Fetch 对话框中,您将看到新的 ref 映射:
+refs/heads/*:refs/remotes/origin/*
。这与 .gitconfig 文件中的内容相匹配。
- 现在,如果您打算稍后获取,请单击保存,或者如果您希望更新本地存储库,请单击保存并获取。
我不完全确定为什么 EGit 没有自动执行此操作,也许这是另一天的问题。
所以让我设置我的场景。我在 Spring 工具套件 (Eclipse 4.5.1) 中使用 EGit 4.1.1。我和精通技术的同事从远程 URL 克隆了相同的 git 存储库。我的技术娴熟的同事更喜欢命令行,他使用 VIM 进行文件修改,然后发出命令
git add .
git commit -m "Modified file"
git push
现在更改在远程存储库中。现在,我不太喜欢 CLI,更喜欢 GUI,我在 Eclipse 中使用 EGit。要接收更改,我右键单击项目(我最初使用 EGit 克隆的项目),转到团队 -> 拉,我被告知有“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
更好的是,我回到 Eclipse,我在 "Git Reflog" 视图中看到了变化,列为
Commit Commit Message Date Reflog Message
---------------------------------------------------------------
68cd2f0 Modified File 2015-12-23 pull: Fast-forward
所以,我觉得这里告诉我的内容让我相信有一个我不熟悉的 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
但是,当我进入 Eclipse 并查看获取配置时,它是空白的。
首先,reflog 在 获取之前不会向您显示任何内容(在命令行或 Eclipse 中):它记录来自 local 仅限克隆。
其次,check your .gitconfig
to see how the remote origin is configured (also seen here).
你需要有一行来获取:
fetch = +refs/heads/*:refs/remotes/origin/*
默认情况下,命令行 git fetch
将使用当前分支:
refs/heads/<head>:refs/heads/<branch>
添加到 VonC 的答案中,这意味着 我在使用 E[= 时最初为 git 存储库配置遥控器时错过了一个步骤 80=] 来配置它。因为我没有为 repo 配置 fetch,Eclipse 给我错误 "Nothing to fetch" - 也许它应该给我一个更有意义的错误,比如 "Fetch not configured for this repository. To configure, you must..." 也许我稍后会修复它,因为 E Git 是开源的。
要在 Eclipse (EGit) 中解决此问题,请执行以下操作:
- 确保Git 存储库 视图已打开。
- Select 特定的 git 仓库,并扩展它直到 remotes 中的特定远程被扩展:
- 右键单击 incoming 来源并选择 Configure Fetch
- 在对话框中,如果您看到根本没有配置提取,请在 Ref Mappings 窗格旁边 select Add
- 在对话框中,对于 Source,键入
refs/heads/*
(尽管有 "Not found in remote repository" 消息。Select Next。 - 对于目的地,确保填写
refs/remotes/origin/*
(可能auto-populate)。确保选中 即使数据可能丢失也更新本地存储库。单击 完成 。 - 现在,在您的 Configure Fetch 对话框中,您将看到新的 ref 映射:
+refs/heads/*:refs/remotes/origin/*
。这与 .gitconfig 文件中的内容相匹配。 - 现在,如果您打算稍后获取,请单击保存,或者如果您希望更新本地存储库,请单击保存并获取。
我不完全确定为什么 EGit 没有自动执行此操作,也许这是另一天的问题。