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

1.GIT的概念
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 与 SVN 区别:
1. GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等
2. GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统最核心的区别
3. GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里
4. GIT分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录
5. GIT没有一个全局的版本号,而SVN有
6. GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏

2. GIT的安装配置
在linux平台上安装GIT
安装依赖工具

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel -y

安装git软件包

yum -y install git-core

查看git版本

# git --version
git version 1.8.3.1

windows mac平台安装GIT配置略。

3. GIT配置
Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量
/etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件
~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件
当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。

3.1 用户信息配置
配置个人用户名和电子邮箱

# git config --global user.name "CloudGIT001"
# git config --global user.email 15800220134@134.com

注:用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息

3.2 文本编辑器
Git默认使用的文本编辑器, 一般是 Vi 或者 Vim
配置默认文本编辑器为vim

# git config --global core.editor vim

  

3.3 差异分析工具
改用 差异分析工具为 vimdiff

# git config --global merge.tool vimff

3.4 查看配置信息

# git config --list
user.name=CloudGIT001
user.email=15800220134@134.com
core.editor=vim
merge.tool=vimff

  

这些配置我们也可以在 ~/.gitconfig 看到

4. GIT 工作流程
git的工作流程如下:
1). 克隆 Git 资源作为工作目录
2). 在克隆的资源上添加或修改文件
3). 如果其他人修改了,你可以更新资源
4). 在提交前查看修改
5). 提交修改
6). 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交
如图:

5. Git 工作区、暂存区和版本库
工作区:就是你在电脑里能看到的目录
暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)
版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库
如图:

6. GIT的基本操作
创建仓库
(1). git init
Git 使用 git init 命令来初始化一个 Git 仓库

# mkdir gitdepot
# cd gitdepot/
# git init
Initialized empty Git repository in /root/gitdepot/.git/

  

指定目录作为Git仓库

# git init gitdepot

  

(2). git clone
使用 git clone 从现有 Git 仓库中拷贝项目
格式:

git clone <repo>

  

克隆到指定的目录格式:

git clone <repo> <directory>

  

(3). git add
git add 命令可将该文件添加到缓存
git status 命令用于查看项目的当前状态

简单例子:

# touch gitfile
# touch hello.py
# git status -s
?? gitfile
?? hello.py
# git add gitfile hello.py # 执行 git add 命令来添加文件
# git status -s
A gitfile
A hello.py

  

"AM" 状态的意思是,这个文件在我们将它添加到缓存之后又有改动。改动后我们在执行 git add . 命令将其添加到缓存中

# git status -s
AM gitfile
# git add .
# git status -s
A gitfile

  

(4). git diff
执行 git diff 来查看执行 git status 的结果的详细信息
git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别
1). 尚未缓存的改动:git diff
2). 查看已缓存的改动: git diff --cached
3). 查看已缓存的与未缓存的所有改动:git diff HEAD
4). 显示摘要而非整个 diff:git diff --stat

(5). git commit
git add 命令将想要快照的内容写入缓存区, 而执行 git commit 将缓存区内容添加到仓库中
注:Git 为你的每一个提交都记录你的名字与电子邮箱地址,所以第一步需要配置用户名和邮箱地址
注:如果没有设置 -m 选项,Git 会尝试为你打开一个编辑器以填写提交信息,类似默认vim打开

(6). git reset HEAD
git reset HEAD 命令用于取消已缓存的内容

(7). git rm
git rm 会将条目从缓存区中移除。这与 git reset HEAD 将条目取消缓存是有区别的。 "取消缓存"的意思就是将缓存区恢复为我们做出修改之前的样子。
默认情况下,git rm file 会将文件从缓存区和你的硬盘中(工作目录)删除
如果你要在工作目录中留着该文件,可以使用 git rm --cached

(8). git mv
git mv 命令做得所有事情就是 git rm --cached 命令的操作, 重命名磁盘上的文件,然后再执行 git add 把新文件添加到缓存区

7. Git 分支管理
创建分支命令格式:

git branch (branchname)

切换分支命令格式:

git checkout (branchname)

合并分支命令:

git merge

1). 列出分支基本命令:

git branch

注:没有参数时,git branch 会列出你在本地的分支

如果创建分支出现:fatal: Not a git repository (or any of the parent directories): .git 时。
解决方法:先git add .添加所有项目文件到本地仓库缓存,再git commit -m "init commit"提交到本地仓库

2). 删除分支
删除分支命令格式:

git branch -d (branchname)

  

3). 分支合并

git merge

  

4). 合并冲突
合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改

8. Git 查看提交历史

git log

  

使用 git log 命令列出历史提交记录

# git log
commit 0f3a4331fb6f96a10eb11216fca16657d5416c2e
Author: CloudGIT001 <15800220134@134.com>
Date: Mon May 22 22:36:22 2017 +0800 init commit

用 --oneline 选项来查看历史记录的简洁的版本

# git log --oneline

  

用 --graph 选项,查看历史中什么时候出现了分支、合并

# git log --oneline --graph

  

使用命令:git log --author 查找指定用户的提交日志

# git log --author=CloudGIT001 --oneline

如果你要指定日期,可以执行几个选项:--since 和 --before,也可以用 --until 和 --after

9. Git 标签
使用 git tag 给git打上标签
注:-a 选项意为"创建一个带注解的标签"。 不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解

例子:
当执行 git tag -a 命令时,Git 会打开编辑器,让你写一句标签注解

# git tag -a v1.0
2017-05-222017-05-22
#
# Write a tag message
# Lines starting with '#' will be ignored.

  

当执行 git log --decorate 时,我们可以看到我们的标签了

# git log --oneline --decorate --graph
* 0f3a433 (HEAD, tag: v1.0, master, gitbranch, change_site) init commit

  

参考学习链接:http://www.runoob.com/git/git-tutorial.html

GIT 分布式版本控制系统的简单使用介绍的更多相关文章

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

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

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

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

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

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

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

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

  5. Git分布式版本控制系统(上)

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

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

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

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

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

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

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

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

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

随机推荐

  1. python变量交换及注释种类,注释注意事项/注释排查方法

    #小练习作业 # texe1 = '能提笔安天下' # print(texe1) # string1 = '武能上' # string2 = '定乾坤' # print(string1,string2 ...

  2. one order 理解

    1: one order core

  3. Ubuntu Server16.04 配置网卡

    展示全部启动网卡 $ ifconfig 配置网卡 $ sudo vi /etc/network/interfaces auto enp2s0 iface enp2s0 inet static addr ...

  4. 2019.03.30 Head first

    第一节 认识python python.exe -V python 会进入解释器 quit()命令会退出解释器 IDEL,一个python的集成开发环境,能够利用颜色突出语法的编辑器,一个调试工具,P ...

  5. itemscope itemtype="http://schema.org/AggregateRating"

    Review Canonical URL: http://schema.org/Review Thing > CreativeWork > Review A review of an it ...

  6. mac book docker

    mbp的某些方面还是挺有吸引力的啊 但工作中大多数用的还是纯linux而不是类unix的mac os,要在家里的mac os x 和linux之间转转弯,有时候想想还是挺别扭的. 为了从公司-> ...

  7. Linux-nmon系统性能监控工具的使用及报表产出

    在进行性能测试的时候,需要获取服务器的各项指标,例如 CPU.MEM.I/O.DISK 等.网上有很多的监控工具,nmon 就是其中的一个,其可与 JMeter结合使用,测试系统的性能.其概要的介绍, ...

  8. Deeplab v3+的结构代码简要分析

    添加了解码模块来重构精确的图像物体边界.对比如图 deeplab v3+采用了与deeplab v3类似的多尺度带洞卷积结构ASPP,然后通过上采样,以及与不同卷积层相拼接,最终经过卷积以及上采样得到 ...

  9. NodeJs笔记 : express框架创建工程 ----- 路由设计

    一.搭建工程 1 .安装 express-generator $ npm install -g express-generator 2 .本地创建express项目 $ express -e blog ...

  10. jQuery-手风琴效果-2

    动画 高级函数:基于底层函数又进行了封装 两大块:简化版的动画函数和万能动画函数 简化版动画函数 显示/隐藏$().show; $(...).hide(); 强调:无参数的show()/hide()使 ...