Git是分布式版本管理系统
Svn是集中式版本管理系统

git速度快,适合大规模协同开发

什么是分布式版本管理系统

假如有10个人,每个人的代码库都是独立的,自己想进行代码提交回滚都可以,无需链接中央服务器,无需联网,所以git是本地开发还可以链接中央服务器与别人交换信息

Git生态

Git是分布式版本管理系统
Gitlab 是一个git的私有库的解决方案
Github 是git公有库的解决方案

Git的原理

Git有四个区域

本地仓库,暂存区域,工作目录是一个区域,(就是上一部我们创建的目录test)

使用git init以后这个目录就包含了这三个区域

远程仓库就相当于svn的中央仓库

GIT的四种状态

Git如何对版本进行管理?
Git会对它管理的文件打一个标识这个标识就是四种状态(每个标识处于哪种状态)

  1. Untarcked状态(未被追踪)如果一个文件第一次放到git库的工作目录里那么它叫做未被追踪的文件处于未被追踪的状态(这个文件还没有纳入版本管理)
  2. staged状态 (以暂存)使用git add 把这个文件推到暂存区域,这个文件也进入了staged状态
  3. Unmodifile状态 (未被修改)使用 git commit把文件提交到本地仓库,文件也就进入了未被修改的状态(所有文件推送到本地仓库都会变为未被修改的状态)
  4. Modifile状态(已修改)如果对文件进行了编辑,文件会从为被修改的状态变为已修改的状态已修改的文件会从本地仓库重新拉回到工作目录里文件修改完成在进行提交,形成循环

GIT安装

注意不要使用git1.8以下版本,推荐使用2.7版本

安装依赖
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
公网下载git
wget https://github.com/git/git/archive/v2.7.4.zip
解压文件
unzip v2.7.4.zip (如果没有unzip需用yum下载)
进入目录
cd git-2.7.
编译安装
make prefix=/usr/local/git all
make prefix=/usr/local/git install
rm -rf /usr/bin/git
ln -s /usr/local/git/bin/git /usr/bin/git
查看版本
git --version

GIT初始化

新建目录
mkdir /root/test
初始化
cd /root/test
git init (初始化之后这个目录就被git的版本控制)
添加版本库的用户信息(就是在提交的时候记录了是谁提交的和他的邮箱)
git config --global user.name "wk" (提交名字)
git config --global user.email xxxxxxxx@.com (提交邮箱)
git config --list (查看提交的信息)

GIT常用命令

git add   加入暂存(索引区)
git status 查看状态
git status-s 状态概览
git diff 尚未暂存的文件
git diff --staged 暂存区文件
git commit 提交更新
git commit -m "first commit"  第一次提交
git reset 回滚 #--soft 缓存区和工作目录都不会被改变 --mixed 默认选项。缓存区和你指定的提交同步,但工作目录不受影响 --hard 缓存区和工作目录都同步到你指定的提交 git rm 从版本库中移除 git rm --cached README 从暂存区中移除 git mv 相当于执行 mv ,git rm ,git add 三个命令

分支管理

正常开发时不能使用master分支,会造成代码提交混乱

创建分支git branch

git branch 分之一

切换分支git checkout

git checkout 分之一
git branch -v (查看信息)

git branch -d (删除分支)

git checkout (切换分支) git checkout --文件名 撤销

git merge (代码合并)
git merge lianxi (在master上操作合并的是联系的分支) git branch --merge(查看哪些分支已经被合并过来了)
git branch --no-merge (查看没有被合并过来了分支)

Git远程管理

git clone 把远程的代码库拉到本地
git remote -v (查看远程库的地址和库的名字)
git push origin 分之一  (把本地的库推到远程仓库origin是库名分之一是分支名)
git fetch origin 分之一 (把远程的库的下载本地)

git tag (添加标签)
git tag -a v1.0 -m "描述"

git分布式版本管理系统的更多相关文章

  1. Git ——分布式版本控制系统

    Git ——分布式版本控制系统 本人git主页地址:https://github.com/lendoon/test.git git使用心得:初次接触git在课堂上,老师给我们提供了一个代码托管的场所, ...

  2. g4e基础篇#2 Git分布式版本控制系统的优势

    g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e作为标识,便于大家查看和搜索. 章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git ...

  3. GIT 分布式版本控制系统的简单使用介绍

    GIT 分布式版本控制系统的简单使用介绍 1.GIT的概念Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 与 SVN 区别:1. GIT不仅仅是个版本控制系统,它 ...

  4. Git分布式版本控制系统(下)

    Git分布式版本控制系统(下) 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方便 ...

  5. GIT分布式版本控制系统

    Git诞生历史 我想大家还记得Linus torvalds在1991年时发布了Linux操作系统吧,从那以后Linux系统变不断发展壮大,因为Linux系统开源的特性,所以一直接受着来自全球Linux ...

  6. 手把手教你玩转Git分布式版本控制系统! (转载)

    目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 Git诞生历史 ...

  7. 手把手教你玩转Git分布式版本控制系统!

    目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 1 Git诞生历 ...

  8. 《Linux就该这么学》自学笔记_ch21_使用Git分布式版本控制系统

    <Linux就该这么学>自学笔记_ch21_使用Git分布式版本控制系统 文章主要内容: 分布式版本控制系统 使用Git服务程序 提交数据 移除数据 移动数据 历史记录 还原数据 管理标签 ...

  9. 开发效率优化之Git分布式版本控制系统(一)

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680本篇文章将先从Git分布式版本控制系统来阐述开发效率优化 一,企业 ...

随机推荐

  1. RabbitMQ 功能

    学习完了rabbitmq总一下 RabbitMQ依赖的语言 erlang 第一它可以实现不同程序之间的程序信息储存交互,在易用性.扩展性.高可用性的方面不俗. rabbitmq相当于一个中间人,我们同 ...

  2. List去重比较

    import java.util.ArrayList; import java.util.HashSet; import java.util.LinkedHashSet; import java.ut ...

  3. ELK架构图示例

    这是最简单的一种ELK架构方式.优点是搭建简单,易于上手.缺点是Logstash耗资源较大,运行占用CPU和内存高.另外没有消息队列缓存,存在数据丢失隐患. 此架构由Logstash分布于各个节点上搜 ...

  4. loj2587 「APIO2018」铁人两项[圆方树+树形DP]

    主要卡在一个结论上..关于点双有一个常用结论,也经常作为在圆方树/简单路径上的良好性质,对于任意点双内互不相同的三点$s,c,t$,都存在简单路径$s\to c\to t$,证明不会.可以参见clz博 ...

  5. hivesql中的concat函数,concat_ws函数,concat_group函数之间的区别

    一.CONCAT()函数CONCAT()函数用于将多个字符串连接成一个字符串.使用数据表Info作为示例,其中SELECT id,name FROM info LIMIT 1;的返回结果为 +---- ...

  6. CodeForces 834C - The Meaningless Game | Codeforces Round #426 (Div. 2)

    /* CodeForces 834C - The Meaningless Game [ 分析,数学 ] | Codeforces Round #426 (Div. 2) 题意: 一对数字 a,b 能不 ...

  7. C++之带有默认参数值的构造函数

    在一个类中 ,如果程序员没有写,任何一个构造函数,则编译器将为该类提供一个默认的构造函数,如果程序员对类的构造函数进行了重载,则编译器将不提供默构造函数,这里需要手动书写一个无参的构造函数, 无参的构 ...

  8. am335x system upgrade usb wifi rtl8188eus(十九)

    1      Scope of Document This document describes how to port rtl8188eus driver to linux 4.14.y desig ...

  9. 小米oj 组长偏头痛(二分)

     组长偏头痛 序号:#28难度:非常难时间限制:1000ms内存限制:10M 描述 临近年底,组长突然患上了偏头痛的毛病,因为他最近从产品经理那里收到了好多需求,需要按排组员尽快完成. 现在用一个数组 ...

  10. [Luogu] 树

    https://www.luogu.org/problemnew/show/P4092 树剖 + 线段树区间修改,单点查询 #include <bits/stdc++.h> using n ...