git笔记,脉络梳理

git笔记

摘要

git操作内容简介:一些基本的概念,命令,分支的关系,分支的处理等。
参考:https://git-scm.com/book/zh/v2

概括
  1. git基本介绍
  2. git基本命令
  3. 分支管理
  4. 常用功能
  5. 远程仓库
  6. 整理提交历史(变基)

基本操作

git优势
  1. 分布式控制系统:服务器和本地均具有完整的操作记录,本地可工作。
  2. 可以和不同的远程交换
  3. 非线性(多人协作),和svn对比(svn是线性)
  4. git很快,大部分是本地操作
  5. 快照记录:版本记录会记录修改文件,没有修改,不会提交。(增量记录)
  6. hash值,赋予版本号 SHA-1
  7. 网上教程:https://www.runoob.com/git/git-install-setup.html
git基本命令
  1. git init 初始化, idea 不同目录可以不同git管理
  2. git add 添加文件管理。 .idea文件处理.gitignore配置文件(忽略管理)
    1. 文件状态
      • 未跟踪:加到扫描列表中,忽略文件,转一暂存
      • 未修改:add -> 已修改,
      • 已修改:commit -> 暂存
      • 已暂存:publish -> 已提交
      • 已提交:
      • 已删除:
  3. git commit 文件提交,
    1. idea中add,commit命令合并: commit -am “”,左下角可以看到git提交记录,可以搜索提交记录,
    2. git: 创建快照
    3. reset: 回退到本次操作前的快照,到工作区,
    4. checkout,切换到某个时间点,或者展开文件列表,checkout方式返回
  4. reset 回退
    1. hard-无视本地一些修改,直接回退到选择的提交点,之后的提交点消失。(基于分支的改动,慎用)。类似于时间线(提交点链表),回退之后会丢失之后的时间线。
    2. mixed,soft-不会实质性的撤回任何改动,视为本地改动,新建提交点,进行相反的操作。
    3. keep-回到时间点,后续丢失,但是不修改本地未提交的内容。hard上进行的一些改动。
分支
  1. 分支概念:
    • 指针,指向提交点的指针。
    • 默认本地分支:master,没有任何特殊含义。
    • HEAD,特殊分支,就是你现在工作区所处的分支,通过HEAD可以拿到你本地的工作区的分支,类似于this。
  2. git branch (branchname) 新建分支
    • 名字:小写单词,有意义的,
  3. checkout (name) 切换分支
    1. revert,等价于checkout,revert可以回到过去的分支
  4. git merge,分支合并,当前分支合并到目标分支。
    1. 有新内容:合并(产生新的融合点,产生新的提交)
    2. 没有新内容:指针移到最新的提交点。(快进模式)
  5. 分支冲突:
    1. 两个分支的,不同的提交点,对同一个文件进行了改动。

git进阶

常用功能
  1. 暂存:(stash和shelve)
    • stash git提供
    • shelve idea提供,功能更强大,(工作区不干净,会自动处理)
    • 未提交的修改保存到暂存区,并将工作区恢复到上次提交的初始状态
    • 使用场景
      • 代码写错分支
      • 修复紧急bug
      • 多版本分支同时维护
  2. 代码补丁
    • 这里说idea提供的
    • git版本,略
    • patch,选取一个或多个提交点,右键点击patch,形成普通文件,用于传输或发送到远端,使用idea来导入,即可在远端引用
    • git不能介入的场景
  3. 标签功能
    • tags,不能修改的分支,一般用作版本号。
    • 本质是一个提交点,使用标签记录。
    • 轻量标签:轻量级,只有一个名字(常用)。
    • 附注标签:重量级(记录太多,不常用)。
  4. 挑拣
    • 选择一个提交点,打成补丁,应用到本地分支。
    • 仅支持一个提交点
    • 版本号会不同(新的提交点)
    • cherry park
  5. 变基
    • 改变分支提交点,基于其他分支。
    • 列子:功能分支要整合主分支的提交,这样HEAD在功能分支,对主分支执行变基即可。效果是:主分支的提交点顺序不变,功能分支提交点按照主分支提交点进行了更新,功能分支的提交点向后放置。
    • 找到两分支共同祖先,对当前分支挑拣。
    • 单向的,双向容易出问题。
    • rebase
  6. 线性分支处理(看要求)
    1. 代码补丁
    2. 挑拣
    3. 变基
远端仓库
  1. 通信协议
    1. 本地协议:远程仓库在本地文件夹
    2. http协议:
      • 使用用户名密码
      • ps: 可以使用docker创建git私服
    3. ssh协议
      • 配置ssh密钥
    4. git协议
  2. 远程分支和本地分支
    1. 本地跟踪远程
    2. 远程分支不会主动更新,不能在本地移动
    3. checkout远程分支得到的是他的本地跟踪分支。
    4. 远程分支可以被合并,挑拣,变基
  3. 更新
    1. 拉取fetch,之后再进行后续处理,刷新的意思
    2. 拽取pull
  4. 推送:push
重写历史
  1. git提交整理
  2. 追加提交
    1. Amend:提交的时候勾选就行,作为上次的补充提交,整合到一个提交点。
  3. 修改提交信息
  4. 合并提交点
    1. 将联系多个提交点,合并未1个提交点
    2. 需要重新设置提交信息
    3. squash和fixup都可以合并提交点
      1. fixUp,后面都是追加提交
      2. squash, 修订加合并提交信息
  5. 删除提交点
    1. drop commit:删除提交点。
    2. revert:创建新提交点,抵消指定的提交点。
  6. 交互式变基
    • 以上操作,均可以在此执行
  7. reset和revert注意区分
    1. reset:基于提交点的,重置(时间回溯,ctrl+z)
    2. revert: 撤销某次提交点

ps:

  1. 禁止修改已经推送远程分支
  2. 禁止修改别人的分支历史
  3. 修改历史基于变基实现的,修改后需要强制推送
  4. 追加最后一个点
  5. 仅在开发完成在推送前提交
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值