Git推送不更新源

时间:2011-11-11 18:25:37

标签: git egit

我真正广泛使用的唯一版本控制软件是Subversion。我喜欢git的功能集和性能,所以我选择将它用于我未来项目的版本控制。

我正在使用Eclipse的eGit插件。我的问题是,当我向上游推送(报告成功)时,原始源代码不会更新。如果我查看版本历史记录,我可以看到推送提交。

如果这是Subversion,我会进行'更新',我的更改将在原点同步。虽然我不再处理单个集中式存储库,但这显然有点不同。

有什么我做错了或根本不做我可以做的更新来源的来源吗?如果答案可以用于使用eGit界面而不是git命令行实用程序,那么它将特别有用。

谢谢!

2 个答案:

答案 0 :(得分:3)

您确定已添加并向本地仓库提交了任何内容吗?

在命令行中,这将是:

$ git add .
$ git commit -m "Some comments about what I've done"

这两项操作都是必要的。 add将其添加为您的索引/暂存区域。 commit实际上创建了一个新的提交对象。

检查这一点的一种方法是再次从命令行:

$ git status

如果它显示一堆未被跟踪和/或尚未添加到暂存区域的文件。这是你的问题。

如果它显示所有内容都是最新的且未经编辑,那么我会检查以确保HEAD指向与您的遥控器不匹配的提交。

以下其中一项可以为您做到这一点:

$ git log
$ gitk --all

如果一切都是应有的,意味着你的本地人都已经承诺了,并且它已经提交了远程没有,那么我会说罪魁祸首在于EGit,我不是专家。

不是说我也是git专家。 :)


如果你的目的是在你的本地push有一个远程位置并让它用你最新的更改来更新文件系统,那么你就会咆哮错误的树。 Remotes should always be bare repos, unless you really know what you're doing

可以在远程仓库上写一个hook,自动检出push日期,但不鼓励这样做。一个更成熟的解决方案是简单地使用git checkout-index...然后scp / rsync / ftp你的文件到其他地方的平面商店。当你在某个地方进行推送或者只是提交时,你甚至可以编写一个钩子来执行此操作。

答案 1 :(得分:1)

“原产地的源代码”是指原点的工作树吗?您需要git checkout原始计算机上的分支,以便将工作树更新为最新的。