0

我通过终端使用计算机 A 创建 a)创建 git 存储库,b)将index.html文件添加到 repo,c)添加远程源,d)推送到远程源。一切都好。

然后,我使用计算机 B 通过终端克隆该存储库。然后,我打开Eclipse(配备Egit),并在克隆过程创建的文件夹中创建了一个新项目。然后我曾经Eclipse将任何更改推送到远程源。

回到计算机 A,我使用 Eclipse 在原始 repo 文件夹中创建了一个项目,然后我尝试从远程源拉取,以获取使用计算机 B 时推送的更改。

Eclipse不会这样做。它抱怨我有诸如.settings,.project和类似的项目,并且由于它们不受版本控制,因此不会通过从服务器获取文件来覆盖它们。我不得不手动删除这些文件(通过终端),然后 Eclipse 按预期工作。

请提供有关如何避免这种情况的信息。

  • 我是否应该从 Eclipse 中创建本地存储库,然后将其推送到远程源,以便 (.settings) 等项目处于版本控制之下,以及(如果是的话)这将如何给克隆存储库和使用不同版本的人带来麻烦日食?

  • 我应该gitignore那些物品吗?

  • 我是否应该要求 Eclipse 将其自己的附属文件保存到另一个文件夹(不是我知道如何做到这一点,我只知道这样NetBeans做)?

4

2 回答 2

0

看起来你没有 gitignored eclipse 文件。

可能,当您通过 egit 提交/推送时,您还提交并推送了您已经在机器 A 中未版本化的文件,因此 git 抱怨,因为您要求覆盖现有的未版本化文件。

强烈建议你 gitignore 那些 eclipse 文件。您可以在github gitignore repo中查看 .gitignore 文件的示例。

希望能帮助到你。

于 2013-09-26T18:35:45.320 回答
0

它抱怨是因为如果您从远程提取更改,它将覆盖您的本地文件。那就是问题所在。另一个回答者是对的。您最好将所有 Eclipse 项目文件和目标 .settings 和类路径添加到 gitignore。在创建项目之前,您也可以为您的计算机使用全局 gitignore。例如,您可以使用 maven,然后您只能从 git 存储库中给出的 pom.xml-s 导入您的项目。我同样使用它们。Egit 和其他 gui 使用起来有点过于复杂。Git 存储库可以在不一致的状态下变得容易,您应该使用老式终端来解决问题。像,重新定位,合并冲突。Gits 的学习曲线很稳固。现在,如果在第一台计算机上保存原始备份并稍后克隆您的项目,您就可以解决您的问题,在将其固定在第二个之后。在第二个 git 上删除所有这些文件,但使用 --cached 选项来避免删除它们。在你这样做之前,请检查 git remove 的帮助!完成此操作后,将它们作为带有通配符的文件名放入 .gitignore 中。您还可以在用户文件夹中使用全局 gitignore 文件。创建一个 .gitconfig 文件,您可以在其中使用以下内容指定全局忽略:

[core]
  excludesfile = ~/.gitignore_global

不仅仅是像这样创建 .gitignore_global :

/nbproject
/bin
/build.xml
.idea
chess.iml
target/
bin

(这个文件是idea和netbeans的。你可以在这里添加eclipse项目文件)

每个项目也可以有 .gitignore 文件。您可以将它们提交到存储库,因此在下一台机器上您不必再次执行此操作。我认为最好的方法是拥有一个 dotfiles git 存储库,它是您的主目录和其中的 dotfiles 的 git 存储库。我还将它用于不同的 Windows 和 Linux 发行版。就这样。您应该将所有配置保存在安全的地方。源代码管理可以做到这一点。但是不要将私人的东西提交给公共场所!;)

哦,我想提一下,你的 .gitignore 文件中也可以有一个 .gitignore 条目。当您不想接触存储库但需要添加 gitignore 来隐藏某些东西时,这可能非常有用,尤其是在给定的存储库中。

于 2013-09-26T18:52:54.473 回答