我通过终端使用计算机A创建a)创建git存储库,b)向repo添加index.html
文件,c)添加远程源,d)推送到远程源。一切都好。
然后,我使用计算机B通过终端克隆该存储库。然后,我打开Eclipse
(配备Egit
),并在克隆过程创建的文件夹中创建了一个新项目。然后我使用Eclipse
将任何更改推送到远程源。
返回计算机A,我使用Eclipse在原始repo文件夹中创建项目,然后我尝试从远程源启动,以获取使用计算机B时推送的更改。
Eclipse
不会这样做。它抱怨我有.settings
,.project
等类似的项目,因为它们不受版本控制,它不会通过从服务器获取文件来覆盖它们。我不得不手动删除这些文件(通过终端),然后Eclipse按预期工作。
请提供有关如何避免此事的信息。
我是否应该从Eclipse中创建本地repo然后将其推送到远程源,以便(.settings)等项目受版本控制,并且(如果有的话)如何给人们克隆带来麻烦repo并使用不同版本的Eclipse?
我应该gitignore
这些项目吗?
我是否应该让Eclipse将自己的附属文件保存到另一个文件夹(不是我知道如何做到这一点,我只知道NetBeans
这样做了吗?)
答案 0 :(得分:0)
看起来你没有gitignored eclipse文件。
也许,当你通过egit提交/推送时,你也提交并推送你已经在机器A中已经无版本化的文件,所以git会抱怨,因为你要求覆盖现有的无版本文件。
我强烈建议你gitignore那些eclipse文件。您可以在github gitignore repo中看到.gitignore文件的示例。
希望它有所帮助。
答案 1 :(得分:0)
它抱怨,因为如果您从遥控器中提取更改,它将覆盖您的本地文件。那就是问题所在。另一个回答者有权利。您应该更好地添加所有eclipse项目文件,并将.settings和classpath作为目标添加到gitignore。在创建项目之前,您也可以为计算机使用全局gitignore。例如,您可以使用maven,然后只能从git存储库中给出的pom.xml -s导入项目。 我用它们一样。 Egit和其他guis有点太复杂了。 Git存储库可以在一个不一致的状态下变得容易,你应该使用oldfashioned终端来解决问题。喜欢,重新定位,融合冲突。 Gits学习曲线很扎实。 现在,您可以解决问题,如果在第一台计算机上保存原始备份并在以后修复项目后再修复它。在第二个git上删除所有这些文件,但使用--cached选项以避免删除它们。在你这样做之前,请检查git remove的帮助!完成此操作后,将它们作为带有通配符的文件名放入.gitignore。您还可以在用户文件夹中使用全局gitignore文件。创建一个.gitconfig文件,您可以使用以下命令指定全局忽略:
[core]
excludesfile = ~/.gitignore_global
不要像这样创建.gitignore_global:
/nbproject
/bin
/build.xml
.idea
chess.iml
target/
bin
(这个文件是为了想法和netbeans。你可以在这里添加eclipse项目文件)
每个项目也可以有.gitignore文件。您可以将它们提交到存储库,因此在下一台机器上您不必再次执行此操作。我认为最好的方法是使用dotfiles git存储库,它是主目录的git repo和其中的dotfiles。我也将它用于不同的Windows和Linux发行版。 就这样。您应该将所有配置保存在安全的地方。源代码管理可以做到这一点。但是不要把私人物品交给一个公共场所! ;)
哦,我想提一下,你也可以在.gitignore文件中输入一个.gitignore条目。当你不想触摸存储库但需要添加一个gitignore来隐藏一些特别是来自给定仓库的东西时,这可能非常有用。