GIT 分布式版本控制系统的简单使用介绍
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 分布式版本控制系统的简单使用介绍的更多相关文章
- GIT分布式版本控制系统
Git诞生历史 我想大家还记得Linus torvalds在1991年时发布了Linux操作系统吧,从那以后Linux系统变不断发展壮大,因为Linux系统开源的特性,所以一直接受着来自全球Linux ...
- 手把手教你玩转Git分布式版本控制系统! (转载)
目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 Git诞生历史 ...
- 手把手教你玩转Git分布式版本控制系统!
目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 1 Git诞生历 ...
- 开发效率优化之Git分布式版本控制系统(一)
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680本篇文章将先从Git分布式版本控制系统来阐述开发效率优化 一,企业 ...
- Git分布式版本控制系统(上)
Git分布式版本控制系统(上) 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方便 ...
- g4e基础篇#2 Git分布式版本控制系统的优势
g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e作为标识,便于大家查看和搜索. 章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git ...
- 《Linux就该这么学》自学笔记_ch21_使用Git分布式版本控制系统
<Linux就该这么学>自学笔记_ch21_使用Git分布式版本控制系统 文章主要内容: 分布式版本控制系统 使用Git服务程序 提交数据 移除数据 移动数据 历史记录 还原数据 管理标签 ...
- Git ——分布式版本控制系统
Git ——分布式版本控制系统 本人git主页地址:https://github.com/lendoon/test.git git使用心得:初次接触git在课堂上,老师给我们提供了一个代码托管的场所, ...
- Git分布式版本控制系统(下)
Git分布式版本控制系统(下) 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方便 ...
随机推荐
- python变量交换及注释种类,注释注意事项/注释排查方法
#小练习作业 # texe1 = '能提笔安天下' # print(texe1) # string1 = '武能上' # string2 = '定乾坤' # print(string1,string2 ...
- one order 理解
1: one order core
- Ubuntu Server16.04 配置网卡
展示全部启动网卡 $ ifconfig 配置网卡 $ sudo vi /etc/network/interfaces auto enp2s0 iface enp2s0 inet static addr ...
- 2019.03.30 Head first
第一节 认识python python.exe -V python 会进入解释器 quit()命令会退出解释器 IDEL,一个python的集成开发环境,能够利用颜色突出语法的编辑器,一个调试工具,P ...
- itemscope itemtype="http://schema.org/AggregateRating"
Review Canonical URL: http://schema.org/Review Thing > CreativeWork > Review A review of an it ...
- mac book docker
mbp的某些方面还是挺有吸引力的啊 但工作中大多数用的还是纯linux而不是类unix的mac os,要在家里的mac os x 和linux之间转转弯,有时候想想还是挺别扭的. 为了从公司-> ...
- Linux-nmon系统性能监控工具的使用及报表产出
在进行性能测试的时候,需要获取服务器的各项指标,例如 CPU.MEM.I/O.DISK 等.网上有很多的监控工具,nmon 就是其中的一个,其可与 JMeter结合使用,测试系统的性能.其概要的介绍, ...
- Deeplab v3+的结构代码简要分析
添加了解码模块来重构精确的图像物体边界.对比如图 deeplab v3+采用了与deeplab v3类似的多尺度带洞卷积结构ASPP,然后通过上采样,以及与不同卷积层相拼接,最终经过卷积以及上采样得到 ...
- NodeJs笔记 : express框架创建工程 ----- 路由设计
一.搭建工程 1 .安装 express-generator $ npm install -g express-generator 2 .本地创建express项目 $ express -e blog ...
- jQuery-手风琴效果-2
动画 高级函数:基于底层函数又进行了封装 两大块:简化版的动画函数和万能动画函数 简化版动画函数 显示/隐藏$().show; $(...).hide(); 强调:无参数的show()/hide()使 ...