设为首页 收藏本站
查看: 777|回复: 0

[经验分享] GitBash、EGit、SourceTree三个Git管理工具对比

[复制链接]

尚未签到

发表于 2018-1-13 19:55:28 | 显示全部楼层 |阅读模式
  Git管理工具对比(GitBash、EGit、SourceTree)
  GitBash是采用命令行的方式对版本进行管理,功能最为灵活强大,但是由于需要手动输入希望修改的文件名,所以相对繁琐。
  EGit是Eclipse的Git插件,最为纠结的一个软件,因为开发时直操作很方便,尤其是有svn开发情节的人更热衷于这样,不过EGit中有很多bug和不人性化的东西,让人吐血,所以
  一句话EGit并不能解决所有Git问题,开发时必须部分依赖于其他Git管理工具。一会一一列举。
  SourceTree是最近应用的一个软件,一句话概括,既有GitBash的命令行,又有EGit的图形化管理,用户界面很人性化,Eclipse+GitBash完全可以应付版本管理。
  那么下面我结合项目中开发遇到的问题一一讲解一下:
  <一>EGit之我见:
  EGit最大的好处是集成在eclipse里面,对于代码修改后提交很方便,其中我最常使用的部分是:
  (1)简单的Commit,pull,push。
  (2)Git repository(看资源库视图)(包括新建分支,切分支,合并分支)
  (3)工程reset hard(强制覆盖本地版本),一些特殊情况会有问题。
  (4)工程checkout到某一个分支,可以看当时的文件。
  (5)工程show in history (查看工程变更历史),没有时分秒,很不爽。
  其他的功能我用的不多,因为EGit确实有很多bug,犯过血淋淋的错误。
  这里解释一下,为什么第一条我要加上”简单的”,因为很多时候没有pull下来,或者没有push上去,提示的信息很粗,有时候甚至误以为提交,发现过很多问题,所以如果确定现在没人和你同时改同一个文件,用EGit还是很爽的。
  <二>GitBash之我见:
  一般我主要通过命令行进行pull push 还有 status的操作,这个详见我前一篇文章
  《Git Bash+EGit在项目中配合使用最常用方法总结》,命令行用好了很是很不错的,除了那种需要手写文件名的时候,比较不爽,一两个还可以,多了就吐血了。
  <三>SourceTree之我见:
  这个是我最近才发现了一个很好的工具SourceTree,可以说SourceTree是EGit和GitBash的合体,既有图形化界面又有git命令行。
  (1)基本的commit、pull、push都拥有,而且一旦发生错误的时候提示很准确。
  (2)基本的分支管理业有,最挫的Egit删除远程分支是假删除,SourceTree完美解决了这个问题。
  (3)拥有EGit中的reset(重置)和checkout(签出)两大功能,而且更加稳定。最令我怀疑的EGit的reset hard也有报错的时候,哎。SourceTree还是很稳定的。
  (4) 那么最近用SourceTree,发现了一个很强大的功能,就是“丢弃”这个功能,和checkout其实原理是一样的。不过图形化界面肯定比较方便了。这里具体解释一下这个功能:
  换句话说,你改了一批文件,如果想提交一部分,保留一部分,无疑命令行最麻烦。
  然后你不满足,其中有几个文件你还想回滚,不想改了。那么SourceTree最容易。
  这里需要注意一下命令行中checkout 是指未add的,那么可以回滚到最近的线上的commit状态。如果add之后又修改,那么会回滚到add之后的状态。
  这一个原理,在Source体现的更明显,如下:
  A. 首先我先将修改后的personRiskBase.jsp拖到缓存区中(1)。
  图(1)
DSC0000.jpg

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

  C. 现在就可以对此文件进行丢弃了,如果将下面文件丢弃(checkout),那么该文件将变为缓冲区中的文件,如果将缓冲区文件丢弃,实际上回到了最近的commit版本了(reset操作)。
  这里注意,如果该文件commit了,那么checkout实际上回不到commit之前的版本的,需要reset。下面详细介绍一下reset命令。
  (5) 对于reset功能的应用。这里先普及一下Git理念的事:
  A. 明确一点,每一次commit都是对应着一批操作而不是对应一个文件。
  这点和SVN的设计理念完全不一样。
  这也造成了一个必然的结局:SVN的分支存的是一个工程,所以每签出一个分支实际上都是签出一个工程。
  而Git的分支存的是修改的记录,所以每签出一个分支,实际上都是对原工程的一次覆盖。
  B.在开发过程中大家可能会遇到这样一个问题:Pull之后,会出现很多别人提交的代码需要你本地再重新提交一次,那么这个原因是这样的,当然这个是我个人的理解:Git会把每一次pull结果做两个处理:
  B1.如果pull之后,本地没有任何问题,那么不需要再次提交别人修改的东西了,只需要继续你的修改,push就可以了(正常情况下一版都是这样)。
  B2.如果pull之后,本地有问题,大部分情况是冲突的情况,那么Git会把本次当做一次不成功的pull(那么通俗的来讲,git会认为,你认为不成功,那么你把这次版本按照你的想法改一下,再提交吧),所以你做完删减之后,需要把刚才别人的东西再提一次作为一个新的commit。
  (6) 对于checkout某一次提交,SourceTree也很人性化,会给出很人性化的提示。注意checkout之后,你的工程当前不属于任何分支,不过可以基于此重新创建一个分支,很方便。
  来自:http://blog.csdn.net/hongshan50/article/details/24622409

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-434801-1-1.html 上篇帖子: Git二进制文件冲突解决 下篇帖子: Sun‘刺眼的博客
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表