关于分布式版本控制系统Git

Git概述

产生原因:1991~2002年间,绝大多数的Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上,故2002年开始使用一个专门的分布式版本控制系统BitKeeper来管理和维护代码。但到了2005年开发BitKeeper的商业公司和Linux内核开源社区合作关系结束,故收回了其免费使用BitKeeper的权利。最终Linux的缔造者Linus Torvalds开发了自己的版本控制系统——Git。人们对于Git也提出了相应的要求和目标。即如下:

  1. 速度;
  2. 简单的设计;
  3. 允许成千上万个并行开发的分支;
  4. 完全分布式;
  5. 高效管理超大规模项目;

Git与SVN的对比

Git特点:

  1. 分布式版本控制系统;
  2. 提交至本地仓库时无需联网,速度快、效率高;
  3. 仓库类型分为两种:本地仓库和远程仓库;
  4. 本地仓库:是开发人员自己在电脑上的Git仓库;
  5. 远程仓库:是远程服务器上的Git仓库;
    关于分布式版本控制系统Git_第1张图片

SVN特点:

  1. 集中式版本控制系统;
  2. 版本库集中放在中央服务器;

集中式版本控制工具缺点:

  1. 服务器单点故障;
  2. 容错性差

Git vs SVN:
Git可离线完成大部分操作,而SVN必须联网;
Git有着更优雅的分支和合并功能以及更强的版本回归和查看历史版本的能力;

Git的安装与配置

☞Git官网

Git的工作流程

关于分布式版本控制系统Git_第2张图片

常用的Git代码托管服务

关于分布式版本控制系统Git_第3张图片

Git常用命令

  1. 环境配置
    设置用户信息:git config --global user.name “用户名”;
    设置用户邮箱:git config --global user.email “邮箱”;
    查看配置信息:git config --list;
    查看用户名:git config --user.name;
    查看用户邮箱:git config --user.email
    上述命令所设置的信息都保存在~/.gitconfig文件

  2. 获取Git仓库
    2.1 方式一:在本地初始化一个Git仓库
    执行操作:
    步骤一:创建一个空目录作为本地Git仓库
    步骤二:进入目录,右键打开Git bash窗口
    步骤三:git init
    在该目录下出现 .git文件夹(该文件夹为隐藏文件夹)则说明创建成功
    2.2 方式二:从远程仓库克隆
    执行操作:git clone 远程Git仓库地址

  3. 关于工作目录、 暂存区、版本库
    关于分布式版本控制系统Git_第4张图片

  4. Git工作目录下文件的两种状态
    关于分布式版本控制系统Git_第5张图片

  5. 查看文件/仓库状态
    执行操作:git status;git status -s(使输出的信息更简洁)

  6. 本地仓库操作
    将未跟踪即已修改的文件或者目录加入暂存区:git add 目录名/文件名;
    将暂存区的文件取消暂存:git reset 文件名;
    将暂存区内容提交至本地仓库:
    git commit; git commit -m “注释内容”;
    查看日志记录或提交历史:
    查看单行:git log oneline;
    查看所有:git log all;
    查看打印记录示意图:git log graph;
    比对不同:
    比对当前内容和暂存区内容:git diff;
    比对当前内容和最近一次提交:git diff HEAD;
    比对当前内容和倒数第二次提交:git diff HEAD^;
    比对当前内容与倒数第十次提交:git diff HEAD~10;
    比对当前内容与具体某一次提交:git diff commit id;
    删除文件:git rm 文件名;(该操作删除的只是工作区的文件,故执行该操作后需要将其状态提交至本地仓库
    删除文件夹:git rm -r --cached 目录名;
    版本回退:
    回退到某个版本:git reset --hard commit_id ;
    查看所有历史,回到最新版本:git reflog;
    将文件添加至忽略列表:在 工作目录下建立一个名为.gitignore的文件,并在其中列出要忽略的文件模式。

关于分布式版本控制系统Git_第6张图片

  1. 远程仓库操作
    查看远程仓库:
    git remote; git remote -v; git remote show 远程仓库名称;
    添加远程仓库(建立关联):
    git remote add 远程仓库名称 远程仓库地址;
    git remote add 远程仓库名称;
    从远程仓库克隆(建立关联):git clone 远程仓库地址;
    移除无效的远程仓库:git remote rm 远程仓库名称;(该命令只是从本地删除远程仓库的记录,并不真正影响远程仓库)
    推送至远程仓库 (若使用码云则执行该操作时需要验证操作者身份):
    git push 远程仓库名称 远程分支名称;
    git push -u 远程仓库名称 远程分支名称 ;
    从远程仓库中抓取最新版本但不会自动合并至本地仓库:
    git fetch 远程仓库名字 远程分支名称;
    故需要手动合并:git merge 远程仓库名称/远程分支名称;
    从远程仓库中拉取最新版本后可自动合并至本地仓库(建立关联):
    git pull 远程仓库名称 远程分支名称;
    在这里插入图片描述

  2. Git分支
    查看分支:
    列出所有本地分支:git branch;
    列出所有远程分支:git branch -r;
    列出所有分支:git branch -a;
    创建分支:git branch 分支名称;
    切换分支:git checkout 分支名称;git switch 分支名称
    创建并切换分支:git checkout -b 分支名称 ; git switch -c 分支名称
    推送至远程仓库分支:git push 远程仓库名称 远程分支名称;
    合并某分支到当前分支:git merge 分支名称;
    解决合并冲突方法如下图:关于分布式版本控制系统Git_第7张图片

    删除本地分支:git branch -d 分支名称;
    删除远程分支:git push 远程仓库名称 -d 远程分支名称;
    关于分布式版本控制系统Git_第8张图片

  3. 标签
    定义:指的是某个分支在某个特定时间点的状态。
    查看标签:
    查看所有标签:git tag;
    查看标签信息:git show tag;
    创建标签(一般用于版本发布时):
    一般创建:git tag 标签名称;
    指定标签信息进行创建:git tag -a -m “ “;
    将标签推送至远程仓库:git push 远程仓库名称 标签名称;
    检出标签:
    新建一个分支指向某个tag: git checkout -b branch 标签名称;
    删除标签:
    删除本地标签:git tag -d 本地标签名称;
    删除远程标签:git push origin:refs/tags/远程标签名称;

  4. 连接远程仓库三种方式:
    通过SSH keys 连接:
    创建SSH Key : ssh-keygen -t rsa -C “邮箱名称”
    通过HTTPS连接
    通过GPG keys 连接

你可能感兴趣的:(关于分布式版本控制系统Git)