git基本概念与操作

版本控制系统(VCS)的发展和历史

版本控制系统的发展可以分成三个阶段:
本地版本控制系统:
集中化的版本控制系统(Centralized Version Control System):
分布式的版本控制系统(Distributed Version Control System):

集中化的版本控制系统的代表就是: CVS, Subversion.集中化的版本控制系统的特点就是,有一个统一的版本管理服务器,对文件进行版本管理。但是这种管理方式,所带来的问题就是如果这台服务器发生宕机,那么所有人都无法提交或更新本地工作。甚至如果没有及时对该服务器上的版本数据进行备份,一旦磁盘发生损毁,将会造成灾难性的后果。
而分布式的版本管理工具正解决了这种问题。其中最具有代表性的就是git。客户端并不提取最新版本的文件快照,而是将代码仓库完整的镜像下来。这样,即使服务器出现问题,也都可以利用任意一台客户端的对服务器进行恢复。

git基本工作原理

类似于Subversion存储每个文件与上一个版本之间的差异。
而git则是通过记录当前工作目录的快照的方式进行版本管理。每次提交时,git都是通过制作当前工作目录中的所有文件的快照,并保存指向这个快照的索引。
那么git是如何保证数据完整性的呢?
git在每次存储钱都会计算文件的校验和,使用的是SHA-1散列,计算文件的哈希值。事实上,git数据库中保存的所有信息,都是通过文件内容的哈希值进行索引的。

除了以上关于git的基本信息,你还需要知道,git是如何维护你的本地版本库的。
如下图总所示,git在本地工作空间维护着”三棵树”,他们分别指向你的工作目录(work directory),add后的缓存区(staged)以及提交后的HEAD区。分别也就对应着文件的三种状态:已修改(modified)或可称为未跟踪的文件(untracked),已暂存(staged),已提交(committed).
git维护的三棵树

git基本命令

先看下git下文件的生命周期:
git文件生命周期
git的每一次操作,都会导致文件生命周期状态的改变。

检查当前文件状态

git status
git检查文件状态
新添加的readme文件,在没有执行git add前,会以untracked files的状态存在。

跟踪新文件

git跟踪新文件

git的安装和配置

Windows下安装配置

github上已经有了名为msysGit的项目提供了安装包,可以到github的页面上下载exe文件并安装。
http://msysgit.github.com/

  • 创建新仓库:git init
  • 执行如下命令以创建一个本地仓库的克隆版本:git clone /path/to/reposity
  • 如果是远程服务器上的仓库,命令如下:git clone username@host:/path/to/reposity

你的本地仓库由git维护的三棵”树”组成。
第一个是你的工作目录:它持有实际文件
第二个是缓存区(index),它像个缓存区域,临时保存你的改动
最后是HEAD,指向你最后一次提交后的结果

  • 添加与提交:
    可以将计划的改动,添加到缓存区,使用如下命令:git add 或 git add *
    使用commit命令将处于缓存区的改动提交到HEAD区, 如下命令: git commit -m “代码提交信息”

  • 推送改动
    处于HEAD中的改动,通过push可以提交到远程仓库:git push origin master,这里可以把master换成你想推送的任何分支

如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,可以使用如下命令:git remote add origin

分支

分支是用来将特性开发绝缘开来。
在你创建仓库的时候,master是默认的。
在其他分支上进行开发,完成后再将他们合并到主分支上。

使用checkout切换分支:
创建一个“feature_x”的分支,并切换过去:git checkout -b feature_x
切换回主分支: git checkout master
删除分支: git branch -d feature_x

更新与合并

  1. 要更新你的本地仓库到最新版,执行: git pull,从而在你的工作目录中获取(fetch)并合并(merge)远端的改动
  2. 要合并其他分支到你的当前分支,执行: git merge
    以上两种情况,git都会尝试去自动合并改动,当合并的过程中发生冲突(conficts)时,可以通过命令:git diff
    处理完冲突后,需要执行git add 进行提交

标签

参考文献

  1. http://www.bootcss.com/p/git-guide/
  2. git深度理解
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值