牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

GIT学习笔记(一)

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://jjuan-flake.blogbus.com/logs/106556090.html

由于之前配过CSV使用过SVN,刚接触GIT时不能区分GIT与前类版本控制系统之间的区别,使用对SVN的了解来试图直接使用GIT。但其实两者之间后较大的区别,他们功能相同,实现方式却差异很大。
1.部署差异:
1.1.集中式版本控制系统
 SVN与CSV同属于集中式版本控制系统,所谓集中式即进行版本控制权限在服务器上,服务器保存所有文件的修订版,各开发终端只是将服务器上最新的修订版取回,然后提交更改后的版本。终端并不保存文件的所有修订版。
 示意图:点击查看原始尺寸
    
 这种方式对系统稳定性要求较高,因为只有服务器存储了一个完整的版本。
1.2 分布式版本控制系统
 GIT属于分布式版本控制系统,顾名思义,分布式即各终端都参与到整个版本控制系统中来。开发终端保存的不是最新版本的镜像,而是整个版本库,是整个版本控制系统的完整备份。因此每次加入一个已有的代码库时使用的是clone【克隆】操作。
 示意图:
 
2. 存储差异
2.1 差异存储(CVS,SVN)
 CVS,SVN这类版本控制系统中,各版本存储的是修改后的文件与原之间的差异信息,每次记录文件内容的具体哪个部分发生了什么变化。

2.2 快照存储
 GIT则只关心文件的整体变化,在每次版本变化时将此时的文件状态做一个快照,只保存指向这个快照的索引信息。

3. 对网路的依赖
 使用CVS和SVN需时时连接到远程服务器,而git则是在本地维护一个版本库,所以提交等都在本地进行,除非将更改一次性push到远程服务器,否则都不需要连接网络。


一、安装配置(windows)
 git 拥有针对各个平台的版本。windows下的有一个模拟shell的版本 msysgit 【http://code.google.com/p/msysgit/】在此下载最新版本。
 git的安装过程就是经典的windows的下一步点击过程,如果没有特殊选择,使用默认选项即可。
 git安装之后需要做几个配置。配置文件均在msysgit安装目录中etc下。

1 shell终端的配置
 msysgit安装之后会在开始菜单里进入shell终端的目录。此shell terminal 使用ls命令时不能列出中文文件。
 为了让ls能够列出中文文件,需要加上 --show-control-char 选项,--color=auto 选项时目录和文件有颜色区分。为了可以直接使用ls达到我们所需效果,可在git-completion.bash文件中加入:
  alias ls='ls --show-control-char --color=auto'
  alias ll='ls -al --show-control-char --color=auto'
 给ls命令定义别名

2 git的配置 gitconfig
 
[gui]
 encoding=utf-8
# 设置成代码库一样的编码,以便在git gui中正常显示中文
[i18n]
 commitencoding=GB2312
#设置commit说明的编码,windows一般是gb2312
[user]
 email = jjuan_flake@sina.com
 name = kunjuan
#说明提交用户


3 配置输入终端 inputrc
  
  set output-meta on
  set convert-meta off 
#使得git bash终端可输入中文

 


二、git的使用

1. git init
 在本地建立版本库时使用此命令处事化一个代码版本控制库
2. git clone [url] [myname]
 在本地克隆一个已有的网络上的版本库,url协议可以是git,https等。如果加了myname则重命名版本库的名字为myname,否则使用原名。使用clone命令时无需在本地先为代码库建立一个目录,执行clone后当前目录自动生成代码库的目录。
 类似于svn checkout,只是此命令克隆的是整个版本库
3.  git add 
 把新建的一个或多个文件设定成跟踪状态,git开始跟踪这个文件的状态信息。将以跟踪的修改文件暂存。
4. git commit [-m '注释']
 提交暂存文件到本地代码库
5. git status 
 查看本分之中文件跟踪状态
6. git pull
 用远程库更新本地库
7. git checkout 
 git checkout 分支名:切换到某分支下
 git checkout 文件名:更新本文件到上次提交的版本
 checkout切换分支后,此事文件状态是此分支的,编辑某个文件,则编辑的只是这个分支的文件状态,不会碰触其他分支的本文件。在此文件commit之前checkout到另外的分支后,还是可以看见此文件更改后的信息,在更改的分支commit之后,则切换回之前的分支后就看不见另一个分支更改的部分了。
8. git branch 
 不加名字即查看所有分支,列表中有*的是当前分支
 加名字则新建一个分支,
  -b 则 新建并切换至此分分支
9.  git merge branchname
  将branchname合并到本分支
git的工作流程
  检出远程版本库到本地=》[新增文件(设置跟踪)]=》修改=》暂存【add】=》提交到本地代码库的本分支【commit】=》合并的master分支=》在master分支中推到服务器。

分支
 一个指向快照的指针。


posted on 2011-07-12 16:06 杨粼波 阅读(885) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理