Git 和 intellij idea使用

1. IDEA中Git的使用方式

1.1 在IDEA中配置git的安装路径。

使用的版本是ULTIMATE 2018.3。 配置git的安装目录,Mac系统可以使用系统自带的git即可。点击Test来测试已经配置好:


1.2 使用IDEA 创建项目并提交本地仓库

创建一个简单的java项目来测试提交本地仓库,点击 File -> New -> Module 来新建一个Moudle,注意配置路径步骤,将module放在项目根目录下。



创建一个简单的类作为测试。下面将项目提交到本地库。左键选中这个项目,按照下边的图示最终点击"Create Git Repository..."



在弹出框中,选好这个项目的目录:

选好了项目目录后,项目中的文件也相应的变为了红色(红色表示已经初始化好了本地库):



如果cd到这个项目的目录下,也可以看到.git文件夹,说明已经完成了git的初始化(git init的结果):

下面就需要提交文件到暂存区(git add [filename])和本地仓库(git commit -m "x" [filename]),在IDEA中,这2步是合成了一步完成的。右键我们的项目,按照下图选择"Commit Directory..."

选择要提交到本地仓库的文件,并键入注释信息,点击“Commit”按钮完成上传本地仓库。

1.3 IDEA指定忽略文件

在进行版本控制时,应该只提交开发的代码(.java文件),不能提交一些IDEA项目的配置文件.iml文件,因为不同开发人员的IDEA工具的版本会有差别,如果版本控制了这些工具配置文件,其他人员在pull文件时,如果拿下了iml文件会影响自身工具的配置,导致错误。
第一种方法,设置某些格式文件不显示:


第二种方法,是我选取的方法,将某种类型的文件,排除在VCS控制之外。

配置好了之后,显示后的内容不会放在VCS控制内,不会被提交。例如,下面的例子,将规定所有以iml结尾的文件将不在VCS控制下。

第三种方法需要安装.ignore插件。
访问下面的地址来下载插件:http://plugins.jetbrains.com/,选择要安装的插件来搜索,搜索出结果后,非常重要的是查看自己的IDEA的版本,选取
对应版本的插件*。

1.4 推送代码到远程库

既然推送到远程库,首先需要先建立一个远程库,这里我以码云(https://gitee.com/)为例,其他Github,私服的Gitlab也是同样的。
先在码云上创建一个空的仓库:


创建好空的远程仓库后,复制HTTP链接备用,https://gitee.com/mjlsg/GitTestDemo.git。下面在IDEA中右击项目GitTestDemo1将其push到这个远程仓库。

在下一个窗口中点击 "Define remote":

下一步定义远程库的别名,下面窗口中,"Name"项是远程库的别名,URL是远程库的地址。

下面直接点击push完成整个“推送代码到远程仓库”的操作。

需要注意的是,在推送代码到远程仓库时涉及到用户密码管理、权限等诸多问题。IDEA可以记录用户名,密码这样可以防止每次在push时都需要输入用户名、密码,很麻烦。
但是,这里有一点需要特别注意,有时在记录用户名、密码时可能会出现Authentition的问题,这种问题出现的场景时,当多个用户共同开发一个project时,他们都需要从一个远程仓库地址来checkout,也需要push。这时,一定注意自己的用户和相应的权限是否符合要求。如果权限不符合要求,就会出现Authentition问题。
最后,经检验代码已经在远程仓库上,push成功。

1.5 IDEA克隆远程仓库项目到本地

克隆远程仓库项目,需要先获得要clone项目的HTTP地址。在IDEA中,按如下操作:


点击后,输入要clone的项目的HTTP地址和项目需要放置的位置,如下图:

上边的截图中,可以点击 "Log in to Github..."按钮,并设置其他托管平台的信息,不一定是Github
下面简单设置一下IDEA工程的基本信息后,就可以新建一个project了。

1.6 IDEA拉取远程仓库项目

这里为了演示pull操作,在GitTestDemo项目(1.5节clone下来的project)做一次commit,并push远程库,以修改远程库代码。
回到GitTestDemo1项目,右键这个项目,按照下面操作进行点击"pull":



点击后,出现下边信息:



需要仔细说明下这些信息。远程库代码pull后,放到本地的"Git Root"项目路径。Remote是我们要pull的远程库的地址。"Branches to merge"表示,我们要拉取的是远程库的master分支,这里的origin是远程库的别名。点击pull后,更新后的代码就pull过来了。

1.7 解决冲突

Git冲突在下边情景中会产生,假如A和B两个人,同时修改了代码增添了不同的内容,当A已经push了远程库后,B再push远程库时就会有冲突,可能会覆盖A的修改。
下边例子,原始代码如下:

public class CommitRepository {
    public static void main(String[] args) {
        System.out.println("Commit project to Local Repository!");
        System.out.println("第二个人更新代码");
    }
}

A修改了代码,并push到了远程库,代码如下:

public class CommitRepository {
    public static void main(String[] args) {
        System.out.println("Commit project to Local Repository!");
        System.out.println("第二个人更新代码");
        System.out.println("3333333333333333");
    }

    public void test(){
        System.out.println("From GitTestDemo Pro");
    }
}

之后,B修改了代码,并准备提交,代码如下:

public class CommitRepository {
    public static void main(String[] args) {
        System.out.println("Commit project to Local Repository!");
        System.out.println("第二个人更新代码");
        System.out.println("444444444444444");
    }

    public void add(){
        System.out.println("From GitTestDemo1 Pro");
    }
}

可以发现B的代码与A的代码有区别,在main函数中,并且新增的方法也不一样,如果B push了自己的代码到远程仓库,会覆盖掉A的代码,导致错误。
B将代码Commit到本地仓库时,不会有错误。在push到远程仓库时,会出现错误:



遇到这种错误时,需要点击merge来解决冲突,通常B需要和A沟通后才能merge,以保证不影响A的功能代码。merge的内容在下边对话框中自己手动输入,以防止错误。



修改完中间的版本后,点击"Apply",就将自己的代码修改为中间的版本,再次操作Git -> push就可以完成最终的覆盖远程代码库的操作。

2. Git工作流

2.1 企业Git工作流

Git工作流通过为功能开发、发布准备和维度设立了独立的分支,也让发布迭代过程更为顺畅。严格的分支模型为大型项目提供了必要的结构。
在企业环境下,比较大的项目的分支会比较复杂,一般情况下,可以按照下边这个结果进行分支策略。
master分支:管理正在运行的生产环境代码。

2.2 测试实例

2.2.1 多用户准备

为了完成多用户协同开发的测试,需要多个码云用户,并在仓库层面添加用户。具体添加方法是登陆码云,在管理功能下,直接添加用户,操作流程如下:



邀请用户后,被邀请用户收到私信,被邀请用户同意邀请即可。

2.2.2 测试过程

项目GitTestDemo模拟程序猿用户,项目右键 -> Git -> Repository -> Branches ;
新建一个develop branch:



在代码中开发一些功能。

3. IDEA的常见配置:

下边总结了一些常用的配置,对于提高效率有帮助:
1.Preference -> Editor ,这两项可以勾选上。完成2个功能:(1) 滑轮改变字体大小 (2)鼠标滑过一个类时,显示这个类的信息。


2.设置自动导包。

在输入代码时,需要导入包,或者处理错误时,使用 Alt + Enter来处理。
3.设置显示行号和方法分隔符(将不同方法区分开来):

4.导入包时不区分大小写:
在java中输入代码stringBuilder时,IDEA默认不帮我们提示或是代码补充,但是如果输入了正确的StringBuffer就会进行代码提示和补充。去掉大小写检查勾选,让其都进行补充。

5.文件tab在多行显示,避免一行时隐藏文件tab标签
当打开的文件比较多时,默认情况下,IDEA会都在一行中显示,如果没地方会隐藏一些tab,这样用起来不方便。

6.配置新建类的注释模板,这样可以极大减少工作量。
一般地,在IDEA中,有以下常见的变量:

        ${PACKAGE_NAME} - 引用当前创建类时所在的包名
        ${PROJECT_NAME} - 当前项目名
        ${NAME} - 文件名
        ${USER} - 引用当前系统的登录用户名
        ${DATE} - 引用当前系统的日期
        ${TIME} - 引用当前系统的时分秒
        ${YEAR} - 引用当前系统的年
        ${MONTH} - 引用当前系统的月
        ${DAY} - 引用当前系统的日
        ${HOUR} - 引用当前系统的小时
        ${MINUTE} - 引用当前系统的分

可以根据自己的实际需求来配置,例如下边的配置模板:



7.全局设置文件编码方式
全局设置项目文件编码方式,代码中包含中文等字符时,设置这项有较大意义。


======== 返回目录 ========
《《《 上一篇 Stream API
》》》 下一篇 机器学习算法:回归理论

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容