【Git】Git 进阶指南

一. Git 常识

  • 早期源码工具: diff / patch
  • 分布式数据库的版本管理系统
  • 直接快照,而非比较差异 / 几乎所有操作都可本地执行 / 时刻保持数据完整性 / 多数操作仅添加数据
  • Git 依赖于 4 类数据对象工作: :“blob” 、 “tree” 、 “commit” 和 “tag” 。
    • blob: 是某个文件数据的快照,称为文件快照对象。 blob 仅仅存储被跟
      踪文件不同版本的内容,并不记录文件的名字、权限等属性。
    • tree: 即某个目录的快照。 tree 对象存储了对应目录所包含的子目录
      tree 对象和文件 blob 对象的指纹字符串 ( 索引 ) 等信息。
    • commit: 包含根目录 tree 对象的索引和其他提交信息元数据,用来标
      记项目某一个特定时间点的状态。
    • tag: 标签,是某个 blob/ tree/commit 对象的快捷名字。可以包含签
      名,最常见的是指向 commit 的 GPG 签名的标签。
  • many stages,one commit
  • git checkout (签出 / 检出)的用法:
    • 目标如果是分支名称,此时实际上实现了分支切换。
    • 目标如果是某个提交 id ,则此时得到一个“分离的头指针”,或者说是切换到了某
      个匿名分支。
  • 跟踪分支(tracking branch):在签出远程跟踪分支时自动创建的本地分支。此时,远程仓库中对应的分支,即为跟踪分支的上游分支。

二. 常用命令

git "使用的命令" -h
  • 配置
git config --global user.email "你的邮箱"  # 配置邮箱
git config --global user.name "你的用户名" # 配置用户名
git config --list  # 查看配置

git remote add "设置远程仓库的命名"(origin) "远程仓库地址"  # 添加远程仓库的配置
  • 创建新仓库
git init
  • 克隆现有仓库
git clone "远程仓库地址"
git clone "远程仓库地址" "重命名的名字"
git clone [ssh://]linus@github.com:/git/git.git # ssh 协议克隆
git clone git://github.com/git/git.git  # git 协议克隆
  • 分支
# 关联远程分支
git push --set-upstream [本地分支] origin/"远程分支名"git push -u [本地分支] origin/"远程分支名"

git remote -v  # 查看当前关联的所有远程仓库
git branch -d "本地分支名"  # 删除本地分支
git push origin --delete "远程分支名"  # 删除远程分支
git branch -vv  # 查看本地分支与远程分支的映射关系
git branch --unset-upstream  # 撤销本地分支与远程分支的关系

# 切换分支
git switch "分支名"git checkout "分支名"  

# 创建并切换分支
git switch -c "分支名"
等价于
git branch "分支名" + git switch "分支名"

git merge "分支名"  # 合并指定分支到当前分支
  • 暂时储藏当前分支下的更改,之后再恢复
git stash  # 暂时储藏当前分支下的更改
git stash pop  # 恢复之前的更改 
  • 暂存
git add [file]git add [dir]git add .  # 添加当前目录下的所有文件到暂存区
  • 提交
git commit -m "提交说明"  # 将暂存区的更改提交到仓库

# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
git commit --amend -m "提交说明" 
  • 同步
git push origin "本地分支"  # 上传本地指定分支到远程仓库
git push origin --force  # 强行推送当前分支到远程仓库,即使有冲突
git push origin --all  # 推送所有分支到远程仓库
git push origin "本地分支":"远程分支"  # 上传本地分支到远程分支

git fetch origin  # 下载远程仓库的所有变动
git pull origin "本地分支"  # 取回远程仓库的变化,并与本地分支合并
  • 查看信息
$ git status  # 显示有变更的文件
$ git log  # 显示当前分支的版本历史
$ git diff  # 显示暂存区和工作区的差异
$ git reflog  # 显示当前分支的最近几次提交
  • 缓存 PAT
git config --global credential.helper cache  # 输入一次PAT后,存入缓存

三. 常见场景

1 git reset(重置) / git rebase(变基)/ git amend(修正)的使用场景

2 匿名分支

git cheackout -b "命名该匿名分支"  # 想要保存匿名分支的提交 

3 git reset --soft / mixed (默认)/ hard 的区别

在这里插入图片描述
在这里插入图片描述

4 git switch --detached 和 git reset --hard 对比

在这里插入图片描述

4 自动合并的成功和失败

在这里插入图片描述在这里插入图片描述

5 合并分支时 , 使用 git rebase 和 git merge 的区别

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值