Git 学习

本文内容

  1. Git 核心特点
  2. Git文件状态、所处区域
  3. 分支
  4. 常用命令

Git 核心特点

分布式:每个本地仓库都有完整的项目文件和目录(含各个版本),本地操作更有效率,主库损坏时可从其他仓库里取数据进行恢复

直接记录文件‘快照’,而非记录文件不同版本间的内容变化

指针字串:每个文件修改后会进行校验和计算,得到一个40 个十六进制字符的串,作为该文件的标识和索引

Git区域

Git目录:一个项目就是一个Git目录,含.git文件,是保存元数据和对象数据的地方,克隆时就是复制这个目录

工作目录:从Git目录中取出某个版本的所有数据,以便后续进行修改

暂存区域:准备提交的修改文件列表,只是一个索引文件,指向所有修改过的文件快照

本地仓库:持久化所有文件快照的地方

 

 Git文件状态 

未追踪:新放入Git目录的文件,尚未有任何版本信息

未更新

已修改(modified):修改了某个文件,但还没有提交保存,处于工作目录

已暂存(staged):把已修改的文件放在下次提交时要保存的清单中,处于暂存区域

已提交(committed): 文件已被保存到本地仓库

 

 分支

目的:从开发主线上分离开来,然后在不影响主线的同时继续开发任务

特点:非常轻量,本质上仅仅是个指向 commit 对象的‘可变指针’

在 Git 中提交时,会把修改文件进行快照得到一个blob结构,对目录生成tree对象(包含指向其中修改文件快照的指针),

还会保存一个提交(commit)对象,它包含一个指向暂存内容快照的指针(tree对象)、 包含指向上次提交对象指针

 

下左图是一个commit对象的数据结构,右图是多个提交对象之间的关系

 

HEAD指向当前分支指针,标识工作目录的当前分支

分支合并

  • merge:利用两个分支的末端 以及它们的共同祖先 进行一次三方合并计算,得到一个新的提交
    • 合并效果:

 

  • rebase:把其中一个分支里做的操作对另一条分支的末端再做一遍,
    • 原理:
      • 回到共同祖先,把历次提交生成生成一系列补丁,
      • 然后以另一条分支末端的提交为基点,重写应用这些补丁
      • 生成一个新的提交对象
    • 用途:让提交历史变成一条直线,更干净
    • 缺点:如果分支中与多个提交,可能得每个提交解决一次冲突,可以用-i参数合并提交
    • 合并效果:

                 

 常用命令

创建git仓库

  • git init  将一个目录变为git仓库
  • git clone [url]    克隆git仓库

记录更新到仓库

  • git add   对文件进行追踪(将其纳入git管理)
  • git rm 移除文件追踪
  • git mv 文件改名
  • git status 查看文件状态,还会显示分支
  • git diff 看暂存前后的变化
  • git commit 提交

查看提交历史

  • git log 
    •  -p 展开每次提交的内容差异
    •  --stat 显示行数统计

撤消操作

  • git commit --amend 修正上一次的提交
git commit 'hi'
git add test
git commit --amend
//三个命令只会产生一个提交,--amend相当于对第一个提交做修正,修正的东西就是两次提交间隔的内容
  • git reset HEAD <file> 取消暂存文件

远程仓库

  • git remote -v 显示远程仓库克隆地址
  • git remote add [shortname] [url]
  • git fetch [remote-name] 从远程仓库拉取本地仓库中还没有的数据(不合并)
  • git pull [remote-name] 拉取并合并到工作目录的当前分支
  • git push [remote-name] [branch-name] 推送分支到远程仓库

分支

  • git branch 创建分支
  • git checkout 切换分支
  • git merge
  • git rebase

子仓库

  • git mondule init

学习自 Pro Git(中文版) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值