zoukankan      html  css  js  c++  java
  • IDEA中的Git操作

    前言

    阅读本文前,假设已经学习过git的理论基础以及git命令行操作

    参见:Git命令行操作

    本文总结的都是IDEA界面操作中,比传统命令行有优势的部分,

    其余用IDEA--Terminal命令行解决就好 ~ ~


     全文结构:


    一、分支管理


    查看分支

    左边是全部的分支,包括Local和Remote:

    (黄色表示现在的Local分支)


    操作分支

    刷新    对比    

    可以进行分支增加、删除;


     拉出分支 (新增分支)

    从现有本地 / 远程分支,拉出来一个新的分支,然后尝试开发。。。

    随时可以在右下角查看/操作分支:

    可以checkout来切换分支:

    可以compare分支


    对比分支

    对比    有两种,

      一种是左边和别的分支对比;

      另一种是时间线上的对比(又分为:普通推进=>2窗口、merge=>3窗口)

     

     如图,选择时间线,再选择文件,双击即可查看对比。

    选择文件后,点击,即可查看此文件的整个时间线修改

     


     二、Commit管理


    2.1)查看commit信息

    中间区域可以看到整个脉络(整个团队的commit)

     

     可以看到commit人和时间:


    1)可以选择不同分支的时间线:

     比如origin/jqy001这个远程分支:

    与上图中总图的颜色是对应的;

    所有成员的远程分支的commit显示的是一样的;不一样的是本地分支(看不到别人的本地分支)

    2)可以指定文件,查看对应文件的git

     3)除此之外,还可以指定用户、修改时间:

              


    Tag

    在时间线上右击一个commit,选择New Tag...  可以添加标签如:v1.0.2


    右下角展示commit详细信息

     


     2.2)操作Commit

    改变HEAD

     

     这个是commit版本中指向的HEAD,

    这里可以选择回退到任意的commit版本


     对比  

     下面三个分别是:不同文件、不同分支、不同时间:

      Compare with 对比文件

      Compare with branch 和不同分支的对比(将整个src对比之前branch就看到自己修改的部分)

      Show History可以查看历史的各个branch脉络


    解决冲突:

    以CodeHub为例,在两个远程分支MR到一个共同分支(如:dev / master),出现冲突时候,第二个merge的人需要处理冲突:

    先到本地pull dev/master的代码(merge):

    然后来解决conflict:

     左边自己的,中间是结果,右边是别的分支已经做的修改(两个例子):

     从左右的两个branch中,把我们需要的内容引入到中间的result中。这样便于比对和汇总。


    杂项操作:

     

    查看此次commit的修改内容(普通修改是2个窗口对比;conflict解决是3个窗口对比)

    回退:Revert到选中的commit(右上角有相同的图标,但含义不同,右上角是回退本branch的修改)

    纵向查看文件的整个修改


     cherry-pick 

      类似于一个定制化的merge,它可以把其它分支上的commit一个个摘下来,合并到当前分支

    git checkout [目标分支]  //先切换到我们开始的旧分支作为基础
    
    git cherry-pick commitId_1 commitId_2 ...  //按顺序挑选需要的commitID

    例-1(IDEA操作):

    从master拉出来两个分支,分别进行两次commit

    查看这个两个分支文件:

      

    切回master,然后:

    摘取1分支的cherry-11和2分支的cherry-2这两个commit:

    (在IDEA里面cherry-pick,只要在commit图界面选择并点击即可)

     查看master分支文件:

    注意:

    • 一次cherry-pick只会merge 这个commit的增量内容
    • 如果有冲突,按照merge的通用解决冲突的方法就行。

    例-2(命令行操作):

    https://learngitbranching.js.org/?locale=zh_CN

     

    执行这条指令后,上图变为下图:


     例-3(CodeHub操作) :

     

    类似 IDEA操作,选择分支=》选择"历史"=》选择具体的commit=》点击右侧cherry-pick

    然后选择pick到哪个分支,(如果merge有冲突就对比解决),然后就可以了。


     rebase

     merge和rebase的区别:

     merge多线交织,rebase永远只有一条线!!

    • rebase的时候,是feature)上,使用 git rebase master 来完成的。(结合图理解)
    • merge的时候,是在(master)上,使用git merge feature来完成的。(结合图)

    rebase做两件事:

    1)合并多个commit为一个完整commit

    git rebase -i  [startpoint]  [endpoint]
    
    git rebase -i HEAD~3

    2)将某一段commit粘贴到另一个分支上

    git rebase   [startpoint]   [endpoint]  --onto  [branchName]
    
    例子:
    git rebase 90bc0045b
    ^ 5de0da9f2 --onto master

      rebase深化阅读:

      https://removeif.github.io/develop/Git-rebase-%E7%94%A8%E6%B3%95%E7%A4%BA%E4%BE%8B%E5%B0%8F%E7%BB%93.html

      https://www.cnblogs.com/ludashi/p/8213550.html


    三、提交一条龙:add、commit、push 


      Add

      Commit File =>单文件 commit的时候可以选择commit&push

      Commit Directory  =>文件夹(要选择整个文件夹右击)

      Push  要选择远程分支,不然默认新建同名远程分支


     右上角一小撮快捷键,分别是pull、commit、push、history、rollback(返回到上一次commit)

  • 相关阅读:
    Flex 学习笔记 Remoting中的作用域(转)
    Flex 学习笔记 动态设置itemRenderer
    发现一个很好玩的网站个人漫画
    AjaxLoad动态生成加载图标的网站
    如何提高大字符串(是从文本文件读取出来的,有2M多)在网页中的显示速度
    CSS纵向居中问题
    用javascript进行xsl转换
    实现鼠标感应效果
    随笔写写
    execCommand指令集
  • 原文地址:https://www.cnblogs.com/qyf2199/p/14446701.html
Copyright © 2011-2022 走看看