• Git管理工具对照(GitBash、EGit、SourceTree)


    Git管理工具对照(GitBashEGitSourceTree

    GitBash是採用命令行的方式对版本号进行管理,功能最为灵活强大,可是由于须要手动输入希望改动的文件名称,所以相对繁琐。

    EGitEclipseGit插件,最为纠结的一个软件,由于开发时直操作非常方便,尤其是有svn开发情节的人更热衷于这样,只是EGit中有非常多bug和不人性化的东西,让人吐血,所以

    一句话EGit并不能解决全部Git问题,开发时必须部分依赖于其它Git管理工具。一会一一列举。

    SourceTree是近期应用的一个软件,一句话概括,既有GitBash的命令行,又有EGit的图形化管理,用户界面非常人性化,Eclipse+GitBash全然能够应付版本号管理。

    那么以下我结合项目中开发遇到的问题一一解说一下:

    <>EGit之我见:

    EGit最大的优点是集成在eclipse里面,对于代码改动后提交非常方便,当中我最常使用的部分是:

    (1)简单的Commitpullpush

    (2)Git repository(看资源库视图)(包含新建分支,切分支,合并分支)

    (3)projectreset hard(强制覆盖本地版本号),一些特殊情况会有问题。

    (4)projectcheckout到某一个分支,能够看当时的文件。

    (5)projectshow in history (查看project变更历史),没有时分秒,非常不爽。

    其它的功能我用的不多,由于EGit确实有非常多bug,犯过血淋淋的错误。

    这里解释一下,为什么第一条我要加上”简单的”,由于非常多时候没有pull下来,或者没有push上去,提示的信息非常粗,有时候甚至误以为提交,发现过非常多问题,所以假设确定如今没人和你同一时候改同一个文件,用EGit还是非常爽的。

    <>GitBash之我见:

    一般我主要通过命令行进行pull push 还有 status的操作,这个详见我前一篇文章

    Git Bash+EGit在项目中配合使用最经常用法总结》,命令行用好了非常是非常不错的,除了那种须要手写文件名称的时候,比較不爽,一两个还能够,多了就吐血了。


    <>SourceTree之我见:

    这个是我近期才发现了一个非常好的工具SourceTree,能够说SourceTreeEGitGitBash的合体,既有图形化界面又有git命令行。

    (1)主要的commitpullpush都拥有,并且一旦错误发生的时候提示非常准确。

    (2)主要的分支管理业有,最挫的Egit删除远程分支是假删除,SourceTree完美攻克了这个问题。

    (3)拥有EGit中的reset(重置)和checkout(签出)两大功能,并且更加稳定。最令我怀疑的EGitreset hard也有报错的时候,哎。SourceTree还是非常稳定的。

    (4) 那么近期用SourceTree,发现了一个非常强大的功能,就是“丢弃”这个功能,和checkout事实上原理是一样的。只是图形化界面肯定比較方便了。这里具体解释一下这个功能:

    换句话说,你改了一批文件,假设想提交一部分,保留一部分,无疑命令行最麻烦。

    然后你不满足,当中有几个文件你还想回滚,不想改了。那么SourceTree最easy。

    这里须要注意一下命令行中checkout 是指未add的,那么能够回滚到近期的线上的commit状态。假设add之后又改动,那么会回滚到add之后的状态。

    这一个原理,在Source体现的更明显,例如以下:

    A. 首先我先将改动后的personRiskBase.jsp拖到缓存区中(1)。

    图(1

     

    B. 然后再次改动,发现以下的工作区中也有这个页面了(图2)。

    (图2

     

    C. 如今就能够对此文件进行丢弃了,假设将以下文件丢弃(checkout),那么该文件将变为缓冲区中的文件,假设将缓冲区文件丢弃,实际上回到了近期的commit版本号了(reset操作)

    这里注意,假设该文件commit了,那么checkout实际上回不到commit之前的版本号的,须要reset。以下具体介绍一下reset命令。


    (5) 对于reset功能的应用。这里先普及一下Git理念的事:

    A. 明白一点,每一次commit都是相应着一批操作而不是相应一个文件。

    这点和SVN的设计理念全然不一样。

    这也造成了一个必定的结局:SVN的分支存的是一个project,所以每签出一个分支实际上都是签出一个project。

    Git的分支存的是改动的记录,所以每签出一个分支,实际上都是对原project的一次覆盖。

    B.在开发过程中大家可能会遇到这样一个问题:Pull之后,会出现非常多别人提交的代码须要你本地再又一次提交一次,那么这个原因是这种,当然这个是我个人的理解:Git会把每一次pull结果做两个处理:

    B1.假设pull之后,本地没有不论什么问题,那么不须要再次提交别人改动的东西了,仅仅须要继续你的改动,push就能够了(正常情况下一版都是这样)。

    B2.假设pull之后,本地有问题,大部分情况是冲突的情况,那么Git会把本次当做一次不成功的pull(那么通俗的来讲,git会觉得,你觉得不成功,那么你把这次版本号依照你的想法改一下,再提交吧),所以你做完删减之后,须要把刚才别人的东西再提一次作为一个新的commit


    (6) 对于checkout某一次提交,SourceTree也非常人性化,会给出非常人性化的提示。注意checkout之后,你的project当前不属于不论什么分支,只是能够基于此又一次创建一个分支,非常方便。

    总结一下:这里仅仅列出了一些关键的问题和不同点,当然工具的选择因人而异。大家能够在工作中慢慢体会,假设有问题欢迎大家提出,给我宝贵的意见。(待续)

  • 相关阅读:
    FZU 2098 刻苦的小芳(卡特兰数,动态规划)
    卡特兰数总结
    FZU 1064 教授的测试(卡特兰数,递归)
    HDU 4745 Two Rabbits(区间DP,最长非连续回文子串)
    Java 第十一届 蓝桥杯 省模拟赛 正整数的摆动序列
    Java 第十一届 蓝桥杯 省模拟赛 反倍数
    Java 第十一届 蓝桥杯 省模拟赛 反倍数
    Java 第十一届 蓝桥杯 省模拟赛 反倍数
    Java 第十一届 蓝桥杯 省模拟赛 凯撒密码加密
    Java 第十一届 蓝桥杯 省模拟赛 凯撒密码加密
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4273919.html
Copyright © 2020-2023  润新知