2010-10-06 58 views
37

简而言之:使用Intellij Idea(9)和Git的最佳实践是什么?与Intellij Idea一起使用Git的最佳实践

语境

我们最近升级到了主意9,并已开始使用Git的对现有项目的新功能。

我们在很大程度上使用git命令行来更好地学习该工具。但我们认为我们会选择蜂巢式的头脑来找出git与想法的最佳实践。

Idea UI对于CVS和Git都很相似,但底层实现有点不同。

问题示例

例如: - 随着CVS,当我们有一个产品的多个版本中,我们每个人都将有1-0的本地副本,2-0,3-0等分支机构,每个分支机构都有自己的Intellij文件(即.ipr,.iws等)。 “git方式”似乎有一个项目,并使用“git分支”来切换分支。这很好,但是当您更改分支时,它会为想法带来巨大的开销(因为它必须重新加载每个更改的文件,包括签入的jar)。所以:你还有一个单独的项目(与.git)为每个“主要版本”或有一个项目,并使用“Git分支”?

- 使用Autostash是一个好主意吗?

- 您是否自动将每个修改添加到您的git commit?或者稍后使用“git add”?

- 你有没有变身?

最佳合并方式?

- 任何其他提示/技巧/什么工作为你等。

最终意见

我们仍然“认为,在便利店”所以,这部分已经习惯了Git的;部分已经习惯了Idea的Ui for git。

这些都是相当基本的问题,因为我们仍然主要使用命令行。此外,我听说过的想法10具有更好的/强/快git的整合工具

感谢

+3

我想要的一个功能是intellij的缓存系统文件夹取决于源代码的散列(就像git本身实现)。这种方式可以在切换很多不同的分支之后快速地重新分配缓存闪存......现在,这是一种痛苦。 – ripper234 2011-06-27 13:26:06

回答

15

下面是我们几个星期的Git /理念后发现。我已经将此作为社区维基。请投入您的2克朗/厘米/芬尼/美分。

注:我回答我自己的问题,因为我寻求那些易于使用的项目符号。

预设

想法是伟大的工具。这里没有人抱怨。只是观察。

最佳实践

  • 此时(9.0.3)GIT中与思想,只是普通难度比SVN使用具有思想。部分原因是Git(vs SVN)的复杂性,部分原因是Idea的工具并没有在git世界中做所有事情。

  • 因此,你将需要使用命令行

  • 理念的合并工具的工作比命令行合并,甚至使用合并工具(MELD使用或合并工具)更好。原因是:你在'想法环境'中有更多的自由主义精神,而不是每次都要固定一个皮毛。

  • 记得理念(CTRL-ALT-Y)进行同步,当你在命令行

  • 看着Git的控制台来学习理念的git的招数更新工作树;想法执行Git命令有(版本控制视图,控制台选项卡):

例如:

13:30:58.234: git log -M --follow --name-only --pretty=format:%H%x00%ct%x00%an%x20%x3C%ae%x3E%x00%cn%x20%x3C%ce%x3E%x00%s%n%n%b%x00 --encoding=UTF-8 -- src/jsp/workspaces/include/edit.jsp 
13:31:02.437: cd J:\projects\PE-GIT\pe 
13:31:02.437: git annotate -p -l -t -M HEAD -- src/jsp/workspaces/include/edit.jsp 
  • 不幸的是理念并没有在9.0“上游提交合并冲突”的好工具0.3

实施例:

  • 爱丽丝做工作,承诺(本地) 文件A,提交文件B,提交文件 Ç
  • 鲍勃做工作,提交文件C,提交文件d,提交文件ē
  • 爱丽丝推她改变
  • 鲍勃拉他的变化

来自CVS/SVN,我期望想法手动差异工具弹出。不是,git/idea会抛出红旗,我通常最终会使用“git mergetool”(linux上的meld od,windows上的tortoiesmerge)。

注意:Idea可能提供更好的方法。请给我直线。 注意动机:你可以设置.gitconfig来使用Idea的差异化工具吗?

积攒

  • 点子 “搁置” 功能重复 “的Git藏匿”。两者似乎相似。两者都使用补丁。你可能想要使用其中一个。我还没有想出的优势,一方或另一方

大旧项目

  • 如果你的工作最近迁移到Git的一个十年的老项目,jar文件签入单片机(即先前检查到CVS/SVN,其中的log4j-1.0.jar是分支-2-0和主线有log4j的-9.0.jar),请谨慎如果要签“2.0版”的你的项目。想法需要卸载所有的“头部”罐子,并重新加载罐子检查在2.0。这需要永远。

其他小东西

  • 的想法菜单/ UI仍然显示 “混帐初始化......” 即使你已经初始化的Git。这很混乱,但忽略它。

  • 你不能在这两个Git和CVS/SVN同一工作树(虽然UI似乎暗示着如此)。我/我们在最初的“让我们尝试git并仍然使用CVS作为备份计划”阶段尝试了这一点。它没有工作

+0

我回到了在新的工作环境中使用Intellij和Git,并且正在研究Intellij如何处理隐藏。使用Shelve时,我经常寄存一个或两个有调试更改的文件,但在Intellij中使用Stash唯一的选择是隐藏所有更改。 – 2014-08-19 20:52:11

4

首先,你可以了解混帐的免费在线参考书很多信息:

注意:Git“良好实践”和工作流程完全独立于您使用的IDE。幸运的是,IDEA是一个很棒的IDE,大部分Git有用的功能都已经实现了(rebase,stash等)

关于你的git-flow问题,你在考虑使用集中式VCS。

Git是分布式版本控制系统。所以,你必须“认为本地第一”。

对于提交,如果您立即或以后将每个文件添加到索引,并且频繁提交,则无关紧要。这是你当地的工作,你可以根据自己的喜好进行组织。

什么是重要的是要有干净的承诺,当你正在你的工作(暴露给其他开发人员)。

当您即将推送时,您可以更正自上次推送以来的所有历史记录(例如使用rebase)。

例如(如果你忘了修改以前提交): - 承诺“的超级函数” - 承诺“oups:忘了一个文件” - 犯“错误修正”

推论题之前3提交,您可以使用交互式底图与IDEA融合这些提交。所以最后2次提交将包含在第一个中。

注意:您可以在未推送的情况下修改历史记录。在你仍然可以之后,但这是一个非常糟糕的主意(如果你不强制Git,下一步将被拒绝),因为它可能会破坏你的同事的历史(如果他们已经取得/合并你的工作)。

关于共同Git的工作流程,我建议您这样的好文章:http://nvie.com/posts/a-successful-git-branching-model/

+0

感谢您的称重。您的意见通常有帮助,分支文章信息。 – user331465 2010-10-07 16:19:12

+5

感谢您的称重。您的意见通常有帮助,分支文章提供信息。 这就是说,我的问题非常具体地涉及到“使用git和Idea”,而不是“我该如何使用git?”。 我特别寻求关于使用Idea UI-for-git与从命令行使用git的务实观点,即“技巧与技巧,危险与陷阱”,“最适合你的东西”,“根据你的需要避免什么体验“等。 再次感谢您提供的见解。 – user331465 2010-10-07 16:26:03