Git初学者:msysgit和tortoisegit

2014年2月2日 /  技术 /  Git,  msysgit,  tortoisegit /  秋水逸冰 / 335 次围观
5

Git现在如日中天,要是不会一点都不好意思自称为攻城师。用过CVS、SVN后再用Git,一时半会儿还有点不太适应,就像习惯了Android界面一时适应不了iOS一样。那么,Git与SVN的区别到底是什么?
Git与大部分版本控制系统的差别是很大的,比如Subversion、CVS、Perforce、Mercurial 等等,使用的是“增量文件系统” (Delta Storage systems), 就是说它们存储每次提交(commit)之间的差异。Git正好与之相反,它会把你的每次提交的文件的全部内容(snapshot)都会记录下来。这会是在使用Git时的一个很重要的理念。

以SVN为例,源代码管理是以服务器为中心的,每个开发者都连在服务器上,本地修改,然后commit到svn服务器上。这种做法看似完美,但是有缺陷:
1、开发者不能本地跟踪代码版本,因为所有的信息都是在服务器上。你把本地的代码改了很多,但是又不能提交。通常,本地只能缓存一个版本。对于小项目无所谓,但是项目一复杂,人员多就麻烦了。通常你本地的代码都全是红色的。自己都不知道今天修改了什么, 有哪些修改是真正应该提交给svn的。
2、因为第一点,一旦离开服务器你将无法正常工作。因为本地不能跟踪代码版本。  你的几乎任何操作都必须连上服务器。比如,show log,blame,show history等等。
3、对于大型项目,svn几乎不可用。比如linux内核项目,开发者何止几万?都直接提交给svn服务器的话还不乱套了。
4、对于个人的项目而言(或者对于小公司的项目),不用版本控制当然不行,但是为了用版本控制而专门架设svn服务器不但麻烦而且浪费。
当然,以上问题Linux内核的作者Linus Benedict Torvalds也遇到了这些问题,于是他决定再一次改变世界, 重写一个可以本地使用的svn。

Git没有服务器,装上Git软件之后,你就可以指定本地的文件夹进行版本控制了。你可拔掉网线,然后在本地修改,commit,revert(rollback), branch, restore, show log, blame, history 等等,全部你之前在svn里面可以用的操作。
如果每个人都自顾自的开发,那么怎么协作呢?通常Git比SVN会多出两个操作,就是 pull 和 push。
开发者之间通过 pull 和 push 操作, 把别人的修改拉过来,或者把自己的修改推给别人。

Git官方网站的口号就是everything is local(一切皆本地),由此可见Git面世之初的定位便是如此。当然大部分程序员都是在Windows下工作,下载Git的windows客户端 msysgit 安装即可,具体安装过程省略(自动识别windows 32 或64位)。
高手习惯于用命令行,但初学者一般还是要GUI客户端的,推荐TortoiseGit,类似于TortoiseSVN,基本操作类似,容易上手。https://code.google.com/p/tortoisegit/
依次安装msysgit和TortoiseGit后,就可以像操作SVN一样创建Git版本库了。
在任意目录下右击,出现TortoiseGit的右键菜单,点击Git Clone,出现如下图界面:

URL填入在线托管的Git地址,Directory便是本地文件夹,其他选择默认即可。
下面列举几个常用的免费Git托管网站:
1、 Github.com https://github.com/ 最著名的免费Git托管网站,曾一度被我天朝大墙屏蔽,缺点是免费的不支持私有项目。
2、 京东代码库 https://code.jd.com/ 京东商城的免费Git托管网站,提供一键搬迁功能,对所有公有、私有项目免费提供容量为1G的存储空间。
3、 开源中国代码托管 https://git.oschina.net/ 支持公有项目和私有项目,成员无限,项目1000个。
4、 CSDN Code https://code.csdn.net/ 支持公有项目和私有项目,提供512MB 存储空间。
5、 Bitbucket https://bitbucket.org/ 也是国外比较著名的Git托管网站,免费用户支持公有和私有项目。

将远程版本库克隆到本地后,就可以像操作SVN一样管理代码了,Diff,Revert,Add,Commit等等。与SVN不同之处是多了3个操作:Pull,Fetch,Push。
右键菜单Git Sync如下图:

利用TortoiseGit快速开始使用Git,可以帮助我们减少学习时间,基本上可以替代命令行实现Git的所有功能。

最后介绍一下两个概念:
1、 Git目录。是为你的项目存储所有历史和元信息的目录——包括所有的对象(commits,trees,blobs,tags),这些对象指向不同的分支。每一个项目只能有一个“Git目录”(这和SVN,CVS的每个子目录中都有此类目录相反),这个叫“.git”的目录在你项目的根目录下,默认是隐藏属性(这是默认设置,但并不是必须的)。
2、 工作目录。Git的“工作目录”存储着你现在签出(checkout)来用来编辑的文件。当你在项目的不同分支间切换时,工作目录里的文件经常会被替换和删除。所有历史信息都保存在“Git目录”中;工作目录只用来临时保存签出(checkout) 文件的地方,你可以编辑工作目录的文件直到下次提交(commit)为止。

附录:
如何去掉安装msysgit后产生的右键菜单,如Git Init Here,Git GUI,Git Bash等?
如果你和我一样,不喜欢msysgit右键菜单的快捷方式,那么完全有办法去除掉。
运行cmd,定位到msysgit的安装目录。
Windows 32位系统:

cd C:\Program Files\Git\git-cheetah
regsvr32 /u git_shell_ext.dll

Windows 64位系统:

cd C:\Program Files (x86)\Git\git-cheetah
regsvr32 /u git_shell_ext64.dll

学习Git中文资料推荐:
Git Community Book 中文版,下载地址:http://gitbook.liuhui998.com/book.pdf

参考链接:
http://www.cnblogs.com/shuidao/p/3535299.html

作者:秋水逸冰

原文链接:Git初学者:msysgit和tortoisegit

秋水逸冰版权所有,转载请保留原文链接。

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>

阅读(26) | 评论(0) | 转发(0) |

0

上一篇:ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法

下一篇:将Linux命令的结果作为下一个命令的参数

相关热门文章
  • C语言排序
  • XenServer部署实录——添加本...
  • 什么是网页模板?网页模板有什...
  • Python yield 使用浅析
  • kvm/ESXI 虚拟化的网络分析...
  • linux 常见服务端口
  • 【ROOTFS搭建】busybox的httpd...
  • xmanager 2.0 for linux配置
  • 什么是shell
  • linux socket的bug??
  • 95013Linux制作的数据库是什么...
  • 移植 ushare 到开发板
  • 系统提供的库函数存在内存泄漏...
  • linux虚拟机 求教
  • 初学UNIX环境高级编程的,关于...
给主人留下些什么吧!~~
评论热议

Git初学者:msysgit和tortoisegit相关推荐

  1. git客户端msysGit和TortoiseGit使用

    windows下使用TortoiseGit代替Git命令行操作(参考http://www.cnblogs.com/candle806/p/4071656.html) 1.配置TortoiseGit与m ...

  2. Git初学者:权威的实用指南

    好的,在看到PJ Hyett的这篇文章之后,我决定跳到最后,选择Git . 因此,我需要的是Git的初学者实用指南. "初学者"被定义为知道如何处理其编译器,在某种程度上理解Mak ...

  3. msysGit与TortoiseGit使用入门

    1  msysGit 所在的网址:http://code.google.com/p/msysgit/ 2 TortoiseGit使用入门 来自:http://blog.csdn.net/spy1988 ...

  4. 版本控制介绍、Git的安装、TortoiseGit的安装、Git的文件操作、IDEA + 同步到GitHub远程仓库 | 克隆 | 分支 | 忽略文件

    文章目录 版本控制 什么是版本控制 常见的版本控制工具 版本控制分类 Git与SVN的主要区别 Git的历史 Git安装与配置 TortoiseGit的安装 Git基本理论 Git项目搭建 Git文件 ...

  5. 10篇写给Git初学者的最佳教程

    转载自:http://paranp_w_picpath.com/best-git-tutoritals-for-beginners/ 10篇写给Git初学者的最佳教程 00 300x109 10篇写给 ...

  6. 写给Git初学者的7个建议

    写给Git初学者的7个建议 当我刚刚开始使用Git的版本控制时,我根本不确定我付出那么多时间是不是会得到回报.Branch.Stage.Stash,这些Git名词对我来说都非常陌生. 而今天的我已不能 ...

  7. IDEA中Git及可视化工具TortoiseGit简单使用

    Git教程 1. IDEA中git使用 1.1代码拉取 如果需要切换分支,可在项目上右键,Git中选择branches- 在弹出页面中,在远程分支模块中,移动到对应分支上点击checkout即可 1. ...

  8. cygwin git mysql,msysgit和Cygwin + git之间的区别?

    What is the difference between msysgit and Cygwin + git? Now I'm using msysgit, but I don't like the ...

  9. 关于同时可用git命令clone和TortoiseGit拉取代码不需要密码

    工作需要在windows7下使用git分布式版本控制系统,需要同时可以在git命令行模式或TortoiseGit拉取代码而不需要每次输入密码. 这时候需要同时安装git和TortoiseGit. gi ...

最新文章

  1. m40型工业机器人_工业机器人选型的9大参数
  2. junit断言_JUnit断言
  3. http://item.jd.com/1275996920.html
  4. mklink实现软件搬家清理C盘空间
  5. rtnetlink组数量与设置
  6. java解析bt协议详解_bt协议详解 基础篇(下)
  7. 英雄联盟轮播图手动轮播
  8. 海康威视实习第一周总结
  9. 影像信息提取之——DEM提取
  10. 红外遥控风扇改手机APP远程控制杂记
  11. C/C++中CRT表示什么意思?
  12. python中的pd是什么意思_python中pd的用法 python中列表的用法
  13. html文件怎么在wps打开是乱码,wps上打开Excel文件是乱码
  14. 如何进入csdn的我的收藏? 我的收藏在哪里?
  15. Android中级控件介绍(五)
  16. ajaxpro安装和使用---有人说ajaxpro是ajax的替代品
  17. 深度学习中的depthwise convolution,pointwise convolution,SeparableConv2D深度可分离卷积
  18. python猜单词游戏_17.Python猜单词游戏
  19. Unity Ads 中国正式落地:做玩家喜欢的广告,为游戏加分
  20. 立国之本——制造业,云计算、大数据助推升级中

热门文章

  1. 近两年小样本学习取得重大进展了吗?
  2. Zigbee五种通信方式
  3. 监控镜头如何选型及故障处理
  4. 申宝证券-个股涨跌对半开
  5. OpenGL-案例-环境搭建
  6. 申请天地图Key的步骤(onmap)
  7. android开发时钟xml,android模拟时钟和数字时钟的例子
  8. 题目:信用卡还款是银行系统的重要业务,业务流程说明如下:用户有信用卡和储蓄卡,储蓄卡有查询余额和取款功能,信用卡能够查看账单金额、查看还款日和查看余额三个功能;
  9. 【CSS】阿里iconfont图标字体使用详解(一步一步图文示例)
  10. 从“马蜂窝事件”看,投资人如何避免数据尽职调查背后的交易风险?