1. Git 先导
1.1 简介
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
1.2 Git与SVN的区别
- Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
- Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
- Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
- Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
- Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
1.3 集中式与分布式
先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。集中式版本控制系统最大的毛病就是必须联网才能工作。
分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
2. Git安装
2.1 Windows 平台上安装
访问Git官网,下载最新安装包,安装即可
2.2 Linux 平台上安装
yum -y install git
git --version
2.3 Git配置
Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。
命令 | Linux配置文件位置 | Windows配置文件位置 |
---|---|---|
git config --system [user.name] [user.email] | /etc/gitconfig | |
git config --global [user.name] [user.email] | ~/.gitconfig | C:\Users\用户目录.gitconfig |
git config --local [user.name] [user.email] | .git/config | .git/config |
3. Git创建仓库
3.1 本地创建仓库
git init
命令来创建本地仓库,创建完成后在本地会生成**.git
**隐藏文件夹,该文件夹包含了资源的所有元数据。
3.2 从远程仓库拉取
git clone
命令用来从远程仓库拉取
4. Git基本命令
命令 | 含义 |
---|---|
git config --system[global][local] | 配置系统变量[全局变量][单仓库变量] |
git init | 初始化本地仓库 |
git clone | 克隆远程仓库 |
git pull | 从远程仓库更新 |
git add [文件] | 将文件添加到暂存区 |
git commit -m “注释” | 将暂存区内容添加到仓库中 |
git push -u origin master | 将本地仓库内容推送到远程master分支(第一次提交需要加一个参数-u,以后不需要) |
git push --force | 将本地内强制推送到远程(慎用) |
git status | 用于显示工作目录和暂存区的状态 |
git log --pretty=oneline | 在一行展示提交记录 |
git reset --hard [版本号] | 版本回退 |
git diff | 文件对比工具,不带参数表示对比工作区与暂存区区别 |
git rm | 在本地仓库删除文件 |
git mv | 在本地仓库移动或重命名文件 |