Git基本使用

Git基本使用_第1张图片

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,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

Git基本使用_第2张图片

2. Git安装

2.1 Windows 平台上安装

访问Git官网,下载最新安装包,安装即可

2.2 Linux 平台上安装

yum -y install git

git --version

2.3 Git配置

git config

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**隐藏文件夹,该文件夹包含了资源的所有元数据。

Git基本使用_第3张图片

3.2 从远程仓库拉取

git clone命令用来从远程仓库拉取

Git基本使用_第4张图片

4. Git基本命令

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 在本地仓库移动或重命名文件

你可能感兴趣的:(版本控制,git)