Git入门 – 区域详解
1.Git
1.1 Git与SVN的区别
Git不仅仅是版本控制系统,同时也是内容管理系统。以下是Git与SVN的区别:
- 分布式:Git是分布式但SVN不是,这是Git与其他系统的核心区别。
- 存储方式为元数据:Git在存储数据时按元数据存储,而SVN则是按文件进行存储
- 分支不同:Git与SVN的分支不同。
- 无全局版本号:Git没有全局版本号而SVN有,目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征
- 内容完整性:Git内容完整性优于SVN,Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
2.Git区域介绍
2.1 简介
Git本地一共有三个区域,分别是工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程Git仓库(Remote Directory)则可以分为四个工作区域。其转换关系如下:
- Workspace:工作区,即平时开发存放项目代码的空间。
- Index/Stage:暂存区,用于临时存放改动的文件,实际上暂存区只是一个文件,保存即将提交的到文件列表信息,一般存放在.git目录下的index文件中。
- Repository:本地仓库,即Git安全存放数据的位置,其中包含用户提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。
- Remote:远程仓库,托管代码的服务器,可以简单人为是项目组中的一台电脑用于远程数据交换。
- Directory:使用Git管理的一个目录,即一个仓库,其中包含工作空间和Git的管理空间。
- WorkSpace:需要通过Git进行版本控制的目录和文件,
- .git:存放Git管理信息的目录,初始化仓库的时候自动创建。
- Index/Stage: 暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。
- Local Repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)。
3.Git分支
3.1 作用
Git分支意味着用户可从开发主线上分离下来,并且在不影响主线的同时继续工作。
3.2 Git分支常用命令
- 列出所有分支
git branch
- 列出所有远程分支
git branch -r
- 新建一个分支并停留在当前分支
git branch [branchName]
- 新建一个分支并切换到该分支
git checkout -b [branchName]
- 切换到主分支
$ git checkout master
- 合并指定分支到当前分支
$ git merge [branchName]
- 删除分支
$ git branch -d [branchName]
- 删除远程分支
$ git push origin -- delete [branchName]
$ git branch -dr [remote/branch]
3.3 branch和master的功能
master主分支应该非常稳定,用来发布新版本,一般情况下 不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。