zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    An impassioned circulation of affection(尺取+预处理)
    旅游(CSUST省赛选拔赛2+状压dp+最短路)
    Islands and Bridges(POJ2288+状压dp+Hamilton 回路)
    Travelling(HDU3001+状压dp+三进制+最短路)
    Hie with the Pie(POJ3311+floyd+状压dp+TSP问题dp解法)
    hash(2018年CSUST省赛选拔赛第一场B题+hash+字典树)
    Everything Has Changed(HDU6354+圆交+求周长)
    [iOS Animation]-CALayer 图层几何学
    [iOS Animation]-CALayer 显示方式
    [iOS Animation]-CALayer 图层树
  • 原文地址:https://www.cnblogs.com/xieshengsen/p/6892657.html
Copyright © 2011-2022 走看看