# Git概述

Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。
Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。

# Git

  1、下载git 

      https://git-scm.com/

      

 

 

  2、版本控制工具

集中式版本控制工具

CVS SVN VSS

集中式的版本控制徐彤诸如CVS SVN等,他门都有一个单一的集中的管理服务器,保存所有文件的修订版本,而协同工作的人们通过客服端连到这胎服务器,取出最新的文件或者提交更新。多年依赖这一成为版本控制系统的标准做法

这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人在做一些什么。而管理员可以轻松掌控每个开发者的权限。并且管理一个集中化的版本控制系统,要远比各个客服端上维护本地数据库来的轻松容易

缺点这么做就是中央服务器的单点故障,如果服务器宕机一小时,那么在这一小时谁都无法提交,无法协同工作

 

分布式版本控制工具

Git Mercuial Bazaar Darcs...
像Git这种分布式版本控制工具,客服端提取的不是最新版本的文件快照而是把代码创库完整的镜像下来(本地库)这样任何一处协同工作用的文件发生故障,事后都可以用其他客服端的本地仓库进行恢复。因为每个客服端的每一次提取操作,实际上都是一次对整个文件仓库的完整备份
分布式版本控制出现之后解决了集中式版本控制工具的缺陷:
1.服务器断网的情况下也可以进行开发(因为版本控制实在本地进行的)
2.每个客服端保存的都是一个完整的项目包含历史记录,更加安全

 

  3、git工作机制

    

 

 

  4、git命令

 

# 命令名称 # 作用
. git config --global user.name 用户名           设置用户签名
. git config --global user.email 邮箱               设置用户签名
. git init                         初始化本地库
. git staus                        查看本地库状态
. git add 文件名                    添加到暂存区
. git commit -m '日志信息' 文件名             提交到本地库
. git reflog                        查看历史记录
. git reset --hard 版本号                版本穿梭
. yy pp                        复制粘贴
. :wq                           保存并退出
. :q!                             退出
. :qa!                           退出
. ll                               查看当前目录下所有目录
. cat                            查看目录里面的内容
. tail -n 1                          查看内容的末尾的第一行

5、git分支 (重要)

      命令名称                     作用
        git branch 分支名                 创建分支
        git branch -v                   查看分支
        git checkout 分支名                切换分支
        git merge 分支名                 把指定的分支合并到当前分支上

  6、git远程仓库

      你可以才gitup或者gitee创建仓库拿到仓库http链接通过git远程操作仓库

    常用命令名称
        git remote -v                       查看当前所有远程地址别名
        git remote add 别名                    远程库地址 起别名
        git push 别名分支                     推送本地分支上的内容到远程仓库
        git clone 远程地址                       将远程仓库的内容克隆到本地
        git pull 远程库地址别名 远程分支名               将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并