我只是从svn转到git,我渴望奠定一些良好的基础。
默认情况下,Eclipse希望将本地克隆存储库存储在〜/ git中。我更愿意在同一个工作区中保存任务的所有数据 - 所以我倾向于将它保留在我的工作区中。
我应该考虑哪些重要的利弊?
我不打算做大量的分支 - 我真的要走dvcs路线,主要是为了克服一些不可靠的互联网通信问题。
答案 0 :(得分:28)
我也在Eclipse中切换到Git,并阅读了这个问题。似乎current wisdom(虽然不是每个人都同意)是:
习惯于将项目放在工作区目录下面。
每组相关的eclipse项目都有一个git存储库(当然也许还有更多的文件)。 “相关项目”的概念取决于您的方便[*]
对于每个存储库,每个Java项目都有一个第一级目录。这意味着您将拥有一个.git/
目录,并且在同一级别上有项目目录。
示例:假设“在GIT之前”,您有一个带有多个项目的eclipse工作区:
/wk/workspace/.metadata/
/wk/workspace/projXXX/
/wk/workspace/projXXXtest/ (related with the previous)
/wk/workspace/projYYY1/ |
/wk/workspace/projYYY2/ > three related projects
/wk/workspace/projYYY3/ |
/wk/workspace/projZ/ (a project you are not going to version in git)
然后你将创建两个空目录,每个存储库一个,说:
~/repositories/XXX/
~/repositories/YYY/
之后,使用新的GIT布局,您将拥有:
/wk/workspace/.metadata/
/wk/workspace/projZ/
~/repositories/XXX/.git/ (XXX related repository - non-bare)
~/repositories/XXX/projXXX/
~/repositories/XXX/projXXXtest/
~/repositories/YYY/.git/ (YYY related repository - non-bare)
~/repositories/YYY/projYYY1/
~/repositories/YYY/projYYY2/
~/repositories/YYY/projYYY3/
当您在现有项目上单击 Team-> Share 并指定(在示例中)~/repositories/XXX/.git/
作为存储库时,Eclipse(EGit)会为您完成所有这些工作({{1作为“工作目录”,将“存储库中的路径”留空。)
[*]请记住,从Git的角度来看,每组项目都只是存储库中的一组目录。一些相关含义:在上面的示例中,您将永远不会在Eclipse工作区中同时拥有两个不同的项目分支/版本~/repositories/XXX/
- projYYY1
;并且,比方说,当您标记项目提交时,您实际上是在标记完整的存储库(项目组)提交。
答案 1 :(得分:2)
.git
应该是您的工作树所在的位置(即代表您正在处理的当前分支的当前HEAD的文件)
请记住,对于Git,分支不是目录(而不是SVN),因此您的工作树将直接表示分支内容,而不是几个目录(对于您的各个分支),后跟每个分支的内容。
我通常喜欢将我的项目源与Eclipse工作区分开,但这是一个偏好的问题。
答案 2 :(得分:2)
我认为,将git版本树存储在工作区之外是一个好主意。这样就可以将项目与不同的存储库分开,但仍然可以在同一个工作区中处理它们。
此外,如果将代码放在工作空间之外,则可以在工作空间之外(在工作副本中)分层组织项目,但仍然可以在Eclipse中看到平面表示。