git基础教程(一)

git基础教程(一)_第1张图片图片链接

1.git基础

1.1 VCS出现之前

  • 用目录拷贝区别不同版本
  • 公共文件容易被覆盖
  • 成员沟通成本高,代码集成效率低下

1.2 集中式VCS

  • 有一个集中的那么版本管理服务器
  • 具备文件版本管理和分支管理的能力
  • 集成效率有明显的提高
  • 客户端必须时刻和服务器相连
    git基础教程(一)_第2张图片

1.3 分布式VCS

  • 服务端和客户端都有完整的版本库
  • 脱离服务端,客户端照样可以去管理版本
  • 查看历史和版本比较等多数操作,都不需要访问服务器,比集中式VCS更能提高版本管理效率
    git基础教程(一)_第3张图片

1.4安装git

  • 官方文档请点击

git基础教程(一)_第4张图片

  • linux安装步骤
    git基础教程(一)_第5张图片
  • windows安装步骤
    git基础教程(一)_第6张图片
  • 查看是否安装成功
git --version

安装成功Linux示意图

安装成功Windows示意图

1.5 git最小配置

  • 配置user信息
    配置user.name和user.email
#目的是为了记录每次的变更,以便秋后算账
#如果忘记设置,后期会提示进行这个设置
git config --global user.name 'yuzhou'
git config --global user.email '[email protected]'

#git config --global 表示对当前用户的所有仓库有效(常用)
#git config --local 表示只对某个仓库有效(常用)
#git config --system 表示对系统所有登录的账户有效(不常用)
#local的优先级高于global


#显示config的配置,加上 --list
git config --local --list 
#想查看那个信息
git config --local user.name

git基础教程(一)_第7张图片

Linux配置示意图

1.6 建git仓库

  • 两种场景
    1.把已有的项目代码纳入git管理
cd 项目代码所在的文件夹
git init

2.新建的项目直接用git管理

cd 某个文件夹
git init your_project #会在当前路径下创建和项目名称同名的文件夹
cd your_project

git基础教程(一)_第8张图片初次体验

1.7 git暂存区概念

git基础教程(一)_第9张图片

  • 相关命令
#1.查看当前管理状态的命令
git status

git基础教程(一)_第10张图片

  #2.将文件提交到暂存区
  git add 文件/文件夹
  git -u 表示将git已经管理过的文件提交到暂存区

git基础教程(一)_第11张图片

  #3.向仓库进行提交
  git commit
  git -m '此次提交的注释' 
  git -am '此次提交的注释' #表示工作区的直接提交到版本库

git基础教程(一)_第12张图片

  #4.查看相关提交日志信息
  git log

git基础教程(一)_第13张图片

1.8 重命名文件

  • 如果直接对源文件进行重命名
    git基础教程(一)_第14张图片
  • 提示我们需要将git仓库之前被管理的read进行删除
#删除仓库的文件
git rm 旧文件名
git add 新文件名

git基础教程(一)_第15张图片

  • 但是这样步骤繁琐
#用一条命令完成对以上的替代
git mv 旧文件名 新文件名

1.9 查看git的版本历史

  • 命令行方式
git log --oneline #简洁的查看git的变更历史
git log -n4 --oneline #简洁的查看git最近4次的变更历史
git log --all 列出所有分支对应的版本信息
git log --all --graph 图形化的方式列出所有分支对应的版本信息 
  • 图形界面的方式
命令行下输入 gitk 命令

git基础教程(一)_第16张图片

1.10 .git目录详解

git基础教程(一)_第17张图片

git checkout 分支名称 #表示切换到新分支
git checkout -b 分支名称 #表示创建分支并切换到此分支
git branch 分支名称 #表示创建新分支

  • HEAD文件
    表示当前处于哪个分支,指向refs文件夹下的具体分支
  • config文件
    包含用户名以及邮箱

git基础教程(一)_第18张图片

  • refs文件夹
    tags表示标签
    heads表示所有分支(相当于一个独立的开发空间)
  • objects文件夹
    git基础教程(一)_第19张图片
    其中的文件夹名称与其下的文件名称共同组成一个哈希值
    这个哈希值是一个 tree 对象(commit 也属于一个对象)
    这个 tree 里面存储了我们源文件以及源文件对应的哈希值
    查看 tree 的内容再次发现一个新的对象 blob(文件)
三种对象 blob commit tree

1.11 commit blob tree三个对象的关系

git基础教程(一)_第20张图片

  • 一个commit对应一个tree
  • 每次提交的一个commit相当于提交了一个文件夹以及一堆相关信息
  • 一个tree算作一个文件夹
  • tree下面还可以包含tree
  • 不同文件名的相同内容文件只算一个blob

1.12 分离头指针

木听懂

1.13 HEAD 与 branch

git基础教程(一)_第21张图片

#以下所指的哈希值不用全部复制,前面几位即可,只要能保证唯一性
git cat-file -t 哈希值 #查看这个哈希值指代的类型
git cat-file -p 哈希值 #查看这个哈希值指代的内容
git diff 哈希值 哈希值 #比较两次commit的不同 

git基础教程(一)_第22张图片

git diff HEAD HEAD^1 
#表示对比上一次commit与上一次commit的父亲的差异
HEAD^1^1 #代表上两次
HEAD^^ #代表上两次
HEAD~2 #代表上两次

了解更多技术文章,欢迎关注我的个人公众号

你可能感兴趣的:(git基础教程(一))