一、Git是一个分布式的代码版本管理工具。类似的常用工具还有SVN,CVS。最大的特点也是优点在于提供分布式的代码管理
1、分支代码只有一份!
使用过svn的童鞋想必都知道,当我们要开发一个新功能或者增加一个新版本或者修改一个复杂bug的时候,通常需要copy整份代码到本地一个目录,然后添加到svn服务器上进行代码管理。
而Git不同,Git可以创建许多branches,每个branch都是独立的,当我们需要修改代码的时候,commit也只是对本地仓库的修改。如果使用SourceTree,我们会发现在工具栏的Git Flow功能,已经很好的为此做了准备。
2、log在本地!
svn的log都是存储在服务器上的,当我们要查阅修改记录的时候,必须要能够连接上远程服务器,并且具有权限。而Git不同,Git对于本地仓库的修改记录都是在本地上的,方便查阅。
3、合并代码更加方便!
因为Git支持本地无限Branches,当我们个体在本地创建多个branches用于不同目的的时候(修改,新增,探索),合并一份代码显然要比svn合并一堆工程copy更加简单。
4、更加安全!
Git的commit命令不同于SVN,commit只是对本地仓库代码的一次更新。当需要提交到master远程仓库,或者其他远程分支仓库的时候,需要使用push功能。虽然增加了一个过程,却可以防止随意修改导致后期合并出现大问题的风险。 在用户工作的时候,从本地仓库修改文件(modified),写入git的暂存区域(staged),将暂存区域的内容提交到本地仓库(committed)。这一系列的工作都是在用户本机的本地仓库上进行的。当你将本地的仓库push到远程服务器上的仓库之前,远程仓库里是没有你的工作成果的。
5、目录更加简洁!
在Git本地仓库根目录,只有一个.git文件,它包含了所有的管理信息。而SVN想必大家都知道,每个子目录下都有噁心的.svn。这个当需要修改文件冲突等问题时,就需要考虑了。肯定是一个文件简单。
二、安装
在进行安装前,要说一下,Git和SVN一样,都需要创建一个服务器的,他们都可以创建自己的版本管理服务器。对于个人和小团队来说,使用托管服务器可能更合适。
常见的有Github 和 Bitbucket。Github没有个人免费仓库使用,代码放上去就是开源的。
Bitbucket的个人仓库相关页面已经基本汉化了。注册流程也比较简单。
安装过程:
1,下载Git installer,地址;
http://git-scm.com/downloads
2,下载之后打开,双击.pkg安装
3, 打开终端,使用git --version或者which git命令查看安装版本,有就是安装成功了
4,创建一个全球用户名、全球邮箱
git config --global user.name "shengyao"
git config --global user.email "MY_NAME@example.com"
5、安装成功后打开终端
cd ~进入根目录
输入命令ssh-keygen生成ssh-key,如果有提示,一直按回车
6、将SSH key添加到GitHub。登录到GitHub页面,Account Settings->SSH Public Keys->Add another key
将生成的key(id_rsa.pub文件)内容copy到输入框中,save。
commd+shift+g进入/Users/chen/.ssh/就可以看得见私钥和公钥
私钥的名字是 id_rsa,是服务器确定你身份的唯一凭证。
公钥的名字是id_rsa.pub。把这个文件发给仓库管理员,仓库管理员会把这个公钥放到服务器上,以后git就通过上面的私钥跟服务器交互了。如果使用github就是自己把公钥内容添加上去
7、找一个目录执行git clone http://xxx.git(从服务器端克隆git库,当然这个要服务器管理员给你权限和帐号),以后xxx目录就是一个git目录,可以在这个目录下执行git操作
三、 linux基础命令
sudo -s 获取绝对用户权限
cd xxx 进入xxx目录
ls (-a/-A) 显示当前路径下所有文件(隐藏的)
pwd 显示当前绝对路径
mkdir xxx 创建文件夹xxx
man xxx 查看xxx命令手册
然后介绍下Git基础命令的含义;
clone 克隆远程仓库
init 初始化仓库
remote 连接远程仓库
pull 从远程仓库下拉获取新数据
push 将本地仓库新增或修改文件上传到远程仓库
add 添加文件或者修改文件,commit以及push之前使用
log 当前仓库提交过的日志信息
status 当前仓库版本状态
commit 提交到当前仓库中
branch 分支命令,相关增删查操作
checkout 使用远程仓库最后一个版本完全覆盖当前仓库内容/选择分支branch
diff 对比版本内容
merge 合并版本内容
所有评论(0)