贺胖娇的编程之旅......

版本管理工具git(1)-起步和基础

2019.11.20

参考文档:git管理

起步

作用

版本管理,git是分布式版本控制系统,既可以本地管理又可以协同合作

特点

(1)直接记录快照,而非差异比较:Git对待数据更像一个快照流(在 Git 中,每当你提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。 为了效率,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。)
(2)近乎所有操作都是本地执行
(3)Git保证完整性:Git 中所有的数据在存储前都计算校验和,然后以校验和来引用。
(4)Git 一般只添加数据

git三种状态及对应区

git存在三种状态:已提交(committed)、已修改(modified) 和 已暂存(staged)
文档中对这三种状态作了解释,以下对这些解释做详细说明:

已修改表示修改了文件,但还没保存到数据库中:可以理解为改了,但是没执行add操作

已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中: 可以理解为执行了add操作,但是还没执行commit操作

已提交表示数据已经安全地保存在本地数据库中:已经执行了commit操作

以上三种状态可以对应Git项目的三个阶段:工作区、暂存区以及 Git 目录。

配置

本文省略git安装过程,直接讲配置。三层git config:
(1)/etc/gitconfig:包含系统上每一个用户及他们仓库的通用配置。 如果在执行 git config 时带上 –system 选项,那么它就会读写该文件中的配置变量。 (由于它是系统配置文件,因此你需要管理员或超级用户权限来修改它。),对于windows是在安装目录下
(2)~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。 你可以传递 –global 选项让 Git 读写此文件,这会对你系统上 所有 的仓库生效。
(3)当前使用仓库的 Git 目录中的 config 文件(即 .git/config):针对该仓库。 你可以传递 –local 选项让 Git 强制读写此文件,虽然默认情况下用的就是它。。 (当然,你需要进入某个 Git 仓库中才能让该选项生效。)
每一个级别会覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量。
查看配置文件位置: git config --list --show-origin 全局配置用户名和邮箱:

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
git confif user.name // 查看某一项配置,直接git config + 配置

注意事项 –global选项配置是对于当前用户的所有目录全局生效,例如加上当前是windows的administrator,执行后对此用户生效,切换其他用户登录时需要重新设置 查看帮助选项:

git help <verb>
git <verb> --help
man git-<verb>
git add -h //快速参考

基础

获取git仓库

初始化一个本地仓库

进入仓库目录,执行

git init //该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件

克隆现有的仓库

使用git clone 命令

四种Git数据传输协议

本地协议(Local)

执行方式:

git clone /opt/git/project.git
git clone file:///opt/git/project.git

HTTP协议

“智能” HTTP 协议的运行方式和 SSH 及 Git 协议类似,只是运行在标准的 HTTP/S 端口上并且可以使用各种 HTTP 验证机制,这意味着使用起来会比 SSH 协议简单的多,比如可以使用 HTTP 协议的用户名/密码的基础授权,免去设置 SSH 公钥。

SSH(Secure Shell)协议

架设 Git 服务器时常用 SSH 协议作为传输协议。 因为大多数环境下已经支持通过 SSH 访问 —— 即时没有也比较很容易架设。 SSH 协议也是一个验证授权的网络协议;并且,因为其普遍性,架设和使用都很容易。

git clone ssh://user@server/project.git
git clone user@server:project.git

ssh协议不能实现匿名访问,因此不能用于开源项目

Git协议

Git 协议缺点是缺乏授权机制。 把 Git 协议作为访问项目版本库的唯一手段是不可取的。 一般的做法里,会同时提供 SSH 或者 HTTPS 协议的访问服务,只让少数几个开发者有推送(写)权限,其他人通过 git:// 访问只有读权限。 Git 协议也许也是最难架设的。 它要求有自己的守护进程,这就要配置 xinetd 或者其他的程序,这些工作并不简单。 它还要求防火墙开放 9418 端口,但是企业防火墙一般不会开放这个非标准端口。 而大型的企业防火墙通常会封锁这个端口。

记录每次更新到仓库

git status看到文件状态,git add 添加跟踪文件
git status -s:缩短git status繁琐的输出,

发表评论