(七)Intellij 中的git操做

       git原理之后会分章节介绍,本次主要说一下intellij怎样操做git。intellij有很好的git操做界面,能够拉取代码,拉取分支详情,提交代码到本地仓库,提交代码到远程仓库,能够merge本地分支,merge远程分支,能够自由的切换分支,能够解决merge带来的冲突问题。总之能够完成基本的git操做,详情以下。html

      一、 更新代码git

       ctrl+T,更新的是远程仓库的代码。(ps:默认更新选择的是branch default 和using stash,能够研究一下其余的选项哦)github


       二、提交代码缓存

       ctrl+K,若是本地代码没有改变,会提示,no changes detected(检测到没有改变)。若是本地代码有改变,则能够进行提交,对于git提交,首先是提交到本地仓库(commit),而后再提交(push)到远程仓库中,和svn比起来,至关于加上一层“缓存”,同时加上一层安全。以下图所示,还有一些其余的细节,一些按钮,能够探究一下哦。安全



       三、两个分支的之间的切换ide

       intellij的右下角有git相关的信息,以下图所示。svn


       Git:xhf_buanch_test表明的是当前分支,通常状况下咱们的当前分之是master。Local Branches:表示本地仓库中的分支,本地的分支都是从Remote Branches中checkout而来的,选择想要下载的远程分支,右键选择check out as new local branch,而后选择ok,在Local Branches中就会增长一个本地分支。测试


       可是分支之间怎么切换呢,提交代码的时候提交到的是哪一个分支呢?fetch

       当前分支是什么默认提交到的就是哪一个分支,因此想要修改哪一个分支,就切换到本地的哪一个分支,可是在分支切换的时候会出现一些问题,为了不这些问题的出现,最好保证以下点。idea

       3.1切换以前ctrl+k,确保没有未提交到本地仓库的文件

       3.2切换以前先更新,把这个分支更新为最新的code。

       而后选择Local Branches中的分支切换为当前分支。可能会出现以下问题,好比分支A_1和分支A_2 两个分支,当A_1中添加了一些文件,可是尚未commit的时候,这时候切换分支到A_2 , A_2中也会有A_1中未提交的文件。


       当有时候会出现从A_1分支切换到A_2分支上,须要merge,咱们能够选择smart merge,当smart merge没有解决问题的时候,咱们能够手动merge,merge result的结果,就是把这些文件放到你要切换到的分支上,因此最安全的方式是选择Merge这个按钮。

       accept Yours是接受A_1分支上的改变,Accept Theirs是接受A_2分支的改变。




       四、新建分支

       点击git框的new Branch,而后输入本身分支的名称,按照本公司的分支命名规则哦。而后会自动切换到当前分支,而后再push到远程仓库中。

       五、同步远程分支

       可能有人新建了远程分支,可是在本地上的Remote Branches中并无远程分支,因此须要右键选择git fetch。

      六、merge远程分支。

A merge B是把A中的改动放到B分支上,B merge A是把B中的改动merge到A中,例如把master分支上的改动移到分支fb_xhf上,能够这样merge。

       6.1 转到master分支上,而后更新master最新更新。

       6.2 再转到fb_xhf上,而后在Local Branches中选择master分支,选择merge,这样就把本地的master merge到 本地仓库的fb_xhf上,而后再选择git push ,这样就把远程master merge到 fb_xhf上, 并会提示: Merged master to fb_xhf。


       七、文件恢复

       本地的文件修改后,想要恢复到本地git仓库上次的提交,能够右键选择git revert。

      八、 cherry pick

       就像摘樱桃同样,在changes列表中,能够看到其余分支提交的动态,若是想要把某次的变化放到当前分支上,能够右键选择cherry pick,这就是摘樱桃。

       九、若是不当心不该该merge的时候merge了,怎样退回到上一次状态?

       在changes中选中最新的提交,而后右键选择reset current branch to here。。而后弹框以下


       选择Hard会返回上一状态,其余的选项,能够看看哦。


       十、颜色变化

git 在未add到git管理的时候是褐色,add后的颜色是绿色,提交以后的颜色是正常色,有修改以后的颜色是蓝色。

       十一、如何删除某些已经提交到本地git仓库和远程仓库上的内容呢?

       可使用git命令:

        11.1  git rm -r --cached    File-or-FolderName    (ps:要删除的文件或目录, 本地git库缓存的文件.)
        11.2   git commit -m  "Removed folder from repository"  (ps:提交到本地)
        11.3  git push origin master (ps: 把删除提交到远程分支上.)

       在intellij中能够在执行完第一个步骤以后ctrl+K commit和push。

       十二、intellij去除非代码提交

       修改 。gitignore文件,并提交到git上。以下修改

              /target
              /.idea
              *.iml
              *.ipr
              *.iws
              .idea
              */*.log
              */target/
              *.DS_Store
              *.classpath
              *.settings
              *.project

       扩展:git http://my.oschina.net/pengfeix/blog/191897?p=1#OSC_h3_3  http://www.51itong.net/git-commit-amend-commit-8551.html

       ps:若是测试的话,能够在github上测试,这样就省去了本地安装git服务端。

总结:

git的博大精深还须要本公主屡次研究和实践,还有不少功能木有用到。总结一下基本的使用和坑,算是抛砖引玉了。