简而言之:使用Intellij Idea(9)和Git的最佳实践是什么?
上下文
我们最近升级到Intellij创意版本9,并开始使用Git在现有项目上使用新功能.
我们主要使用git命令行来更好地学习该工具.但是我们认为我们会选择蜂巢头脑来找出git最佳实践的想法.
Idea UI与CVS和Git类似,但底层实现略有不同.
示例问题
例如: - 使用CVS,当我们有多个产品版本时,我们每个人都会拥有1-0,2-0,3-0等分支的本地副本,每个分支都有自己的Intellij文件(即.ipr,.iws等)."git方式"似乎有一个项目并使用'git branch'来切换分支.这很好,但是当你改变分支时,它会为想法创造巨大的开销(因为它必须重新加载每个已更改的文件,包括签入的jar).那么:你们每个"主要版本"还有一个单独的项目(.git),或者有一个项目并使用"git branch"吗?
- 使用Autostash是个好主意吗?
- 您是否自动将每个修改添加到您的git提交?或者稍后使用"git add"?
你有什么变化吗?
- 合并的最佳方式?
- 任何其他提示/提示/为你工作的东西等.
最后评论
我们仍然"在cvs中思考",所以这部分习惯于git; 部分已经习惯了Idea的Ui for git.
这些是相当基本的问题,因为我们仍然主要使用命令行.另外我听说10有更好/更强/更快的git集成工具
谢谢
这是我们在Git/Idea几周后发现的.我把它变成了一个社区维基.请投入你的2克朗/厘米/ pfennings /美分.
注意:我正在回答我自己的问题,因为我找到了那些简单易用的要点.
前提
想法是很棒的工具.这里没有人抱怨.只是观察.
最佳实践
在这一点上(9.0.3)使用Idea的Git比使用Idea的SVN更难使用.部分源于Git(vs SVN)的复杂性,部分原因是Idea的工具并不能完成git世界中的所有工作.
因此,您将需要使用命令行
理念的合并工具的工作很多比命令行合并,甚至使用合并工具(MELD使用或合并工具)更好.原因是:你有更多的自由离开在"思想环境"中工作,而不是一次修复一个棉绒.
从命令行更新工作树时,请记住在Idea(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
遗憾的是,Idea在9.0.3中没有很好的工具来"合并上游提交中的冲突"
例:
Alice工作,提交(本地)文件A,提交文件B,提交文件C.
Bob工作,提交文件C,提交文件D,提交文件E.
爱丽丝推动她的变化
鲍勃拉出他的改变
来自CVS/SVN,我期待Ideas弹出方便的差异工具.没有.相反,git/idea会引发一个红旗,我通常最终会使用"git mergetool"(在Linux上使用meld od,在windows上使用tortoiesmerge).
注意:也许Idea提供了更好的方法.请让我直截了当.请注意动机:你能设置.gitconfig来使用Idea的差异化工具吗?
积攒
想法"搁置"功能复制"Git Stash".两者看似相似.两者都使用补丁.您可能想要使用其中一个.我还没有弄清楚其中一个的好处
大老项目
如果您正在处理最近迁移到Git的十年旧项目,则将jar文件签入scm(即之前已检入CVS/SVN,其中log4j-1.0.jar位于BRANCH-2-0中且主线具有log4j- 9.0.jar),请谨慎操作,如果要检出项目的"2.0版本".Idea需要卸载所有"头"罐子并重新加载罐子里检查过的2.0.这需要永远.
其他小东西
即使你已经初始化了Git,想法菜单/ UI仍会显示"git init ...".令人困惑,但忽略它.
你不能在Git和CVS/SVN中拥有相同的工作树(虽然UI似乎暗示如此).我/我们在最初的"让我们尝试git并仍然使用CVS作为备份计划"阶段尝试了这一点.它没用