blog-web/source/_posts/git/Git(1)-初见.md
结发受长生 10e4564c71 时间调整
2018-05-20 19:39:08 +08:00

70 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Git(1)-初见
date: 2017-11-18 02:35:18
tags:
- git
- 版本控制
categories:
- Git
---
Git是分布式版本控制系统与SVN类似的集中化版本控制系统相比集中化版本控制系统虽然能够令多个团队成员一起协作开发但有时如果中央服务器宕机的话谁也无法在宕机期间提交更新和协同开发。甚至有时中央服务器磁盘故障恰巧又没有做备份或备份没及时那就可能有丢失数据的风险。
<!-- more -->
但Git是分布式的版本控制系统客户端不只是提取最新版本的快照而且将整个代码仓库镜像复制下来。如果任何协同工作用的服务器发生故障了也可以用任何一个代码仓库来恢复。而且在协作服务器宕机期间你也可以提交代码到本地仓库当协作服务器正常工作后你再将本地仓库同步到远程仓库。
#### Git的优势
+ 能够对文本版本控制和多人协作开发
+ 拥有强大的分支特性 , 所以能够灵活地以不同的工作流协同开发
+ 分布式版本控制系统 , 即使无网络的情况下也能提交代码到本地仓库 , 有网络时再同步到远程仓库
+ 当团队中某个成员完成某个功能时 , 通过pull request操作来通知其他团队成员 , 其他成员可以进行review code后再合并代码
#### Git的特性
+ 版本库当中的文件有3种状态 , 分别是`已提交(committed)` , `已修改(modified)` , `已暂存(staged)`
+ 直接记录快照 , 而非差异比较
+ 多数操作仅添加数据
+ 几乎所有的操作都是在本地执行
+ 时刻保持数据的完整性
### 准备工作
#### config
Git自带一个`git config`工具来帮主设置git的相关配置
```bash
#查看操作系统中所有用户的通用配置
git config --system --list
#查看当前用户的配置
git config --global --list
```
如果是当前仓库中 , 则在.git/config 中的配置是只针对该仓库的 , 每个级别的配置会覆盖上一个级别的配置
```bash
#可以单独查看某一项配置信息
#如果没有指定级别,则表示查看最终生效的配置信息
git config user.name
#或者指定某个级别的某个属性
git config --global user.name
```
##### 设置用户信息
```bash
git config --global user.name "NewName"
#如果不加global则表示只修改当前库当中的配置信息
```
#### .gitignore
每个库中都可以存在一个该文件
用来配置不需要git进行追踪的文件 , 比如日志 , 编译的临时文件等
内容规范如下
+ `#`开头表示注释
+ 可以使用标准的glob模式匹配
+ 匹配模式以`/`开头防止递归
+ 匹配模式以`/`结尾指定目录
+ 要忽略指定模式以外的文件或目录 , 可以在模式前加上`!`表示取反
glob模式是一种简化的正则表达式
+ `*` 匹配零个或多个任意字符
+ `[abc]` 只包含括号内的任意一个字符
+ `[0-9]` 横线表示范围
+ `?` 匹配任意一个字符
+ `**` 匹配任意的目录结构