将Git与Intellij Idea结合使用的最佳实践

将Git与Intellij Idea结合使用的最佳实践,git,intellij-idea,Git,Intellij Idea,简而言之:使用Intellij Idea(9)和Git的最佳实践是什么 上下文 我们最近升级到IntellijIDEA版本9,并开始在现有项目上使用Git实现新功能 我们主要使用git命令行来更好地学习该工具。但我们认为我们应该选择蜂巢思维,找出git和idea的最佳实践 CVS和Git的Idea UI相似,但底层实现略有不同 示例问题 例如: -使用CVS,当我们有一个产品的多个版本时,我们每个人都会有1-0、2-0、3-0等分支的本地副本,每个分支都有自己的Intellij文件(即ipr、i

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

上下文

我们最近升级到IntellijIDEA版本9,并开始在现有项目上使用Git实现新功能

我们主要使用git命令行来更好地学习该工具。但我们认为我们应该选择蜂巢思维,找出git和idea的最佳实践

CVS和Git的Idea UI相似,但底层实现略有不同

示例问题

例如: -使用CVS,当我们有一个产品的多个版本时,我们每个人都会有1-0、2-0、3-0等分支的本地副本,每个分支都有自己的Intellij文件(即ipr、iws等)。“git方式”似乎只有一个项目,并使用“git分支”切换分支。这很好,但当您更改分支时,idea会产生巨大的开销(因为它必须重新加载每个更改的文件,包括签入的JAR)。那么:对于每个“主要版本”,您仍然有一个单独的项目(使用.git),还是只有一个项目并使用“git分支”

-使用Autostash是个好主意吗

-您是否会自动将每次修改添加到git提交中?或者稍后使用“git add”

-你重新定基了吗

-合并的最佳方式

-任何其他提示/提示/对你有用的东西等

最终评论

我们仍然“在cvs中思考”,所以这部分是为了适应git;部分是习惯Idea的git用户界面

这些都是相当基本的问题,因为我们仍然主要使用comand系列。我还听说idea 10有更好/更强/更快的git集成工具


谢谢

首先,你可以在免费的在线参考书上找到很多关于git的信息:

注意:Git“良好实践”和工作流与您使用的IDE完全无关。幸运的是,IDEA是一个很棒的IDE,大多数Git有用的函数都得到了很好的实现(rebase、stash等)

关于你的git流问题,你的想法就像是集中的风投

Git是一个分布式版本控制系统。所以,你必须“先考虑本地”

对于提交,如果您立即或稍后将每个文件添加到索引中,如果您频繁提交或不频繁提交,则实际上并不重要。这是你的本地工作,你可以根据自己的喜好组织它

重要的是,当您将推送您的工作(将其公开给其他开发人员)时,要有干净的提交

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

例如(如果您忘记修改上一次提交): -提交“超级函数” -提交“oups:忘记文件” -提交“错误更正”

在推送论文3提交之前,您可以使用IDEA的交互式基础,将论文提交融合在一起。因此,最后两次提交将包含在第一次提交中

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


关于一个常见的Git工作流程,我推荐这篇好文章:

以下是我们在Git/Idea的几个星期后发现的内容。我把它变成了一个社区维基。请加上你的2克朗/厘米/便士/美分

注:我回答我自己的问题是因为我寻求那些易于使用的要点

预设

创意是很好的工具。这里没有人抱怨。只是观察而已

最佳实践

  • 在这一点上(9.0.3),Git with Idea显然比SVN with Idea更难使用。部分原因是Git(vs SVN)的复杂性,部分原因是Idea的工具在Git世界中并不是万能的

  • 因此,您需要使用命令行

  • Idea的合并工具比命令行合并甚至使用mergetool(使用meld或mergetool)工作得更好。原因是:在“创意环境”中,你有更多的空闲时间来工作,而不是一次只固定一根线头

  • 从命令行更新工作树时,请记住在Idea(ctrl-alt-y)中同步

  • 观看Git控制台,学习idea的Git技巧;idea在那里执行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
  • 不幸的是,Idea在9.0.3中没有用于“合并上游提交中的冲突”的好工具
例如:

  • Alice工作,提交(本地) 文件A,提交文件B,提交文件 C
  • Bob工作,提交文件C,提交文件D,提交文件E
  • 爱丽丝推动她的变化
  • 鲍勃收回他的零钱
来自CVS/SVN,我期待着一个方便的差分工具出现。不是。我通常使用“git mergetool”(linux上的meld od,windows上的tortoiesmerge),而不是git/idea抛出了一个危险信号

注:也许Idea提供了更好的方法。请帮我澄清一下。 请注意:您可以设置.gitconfig来使用Idea的diffing工具吗

隐藏

  • 想法“搁置”功能与“Git隐藏”重复。两者似乎相似。两者都使用补丁。你可能想用其中一个。我还没有弄明白其中一个的优点
大型老项目