📕
余烬的小册
数据结构与算法GitHub
  • 总述
  • 经验记录
    • 经验总结
      • web component
      • 前端性能优化总结与分析
      • 我的长列表优化方案
      • 双向通讯解决方案
      • 🔧基于istanbul实现代码测试覆盖率工具
      • 表单系统(低代码表单)
      • 跨端小程序
      • 设计一个即时聊天功能
      • 跨页面通讯 3658699fe4cb4d0bbe22b0881390bacd
    • 踩坑记录
      • HTML踩坑记录
      • Flutter踩坑记录
      • CSS踩坑记录
  • 源码解析
    • Vue源码解析
      • Vue2源码解析系列-响应式原理
      • Vue2源码解析系列-模板编译
      • Vue2源码解析系列-渲染系统(待更新)
        • Patch
      • Vue2源码解析系列-调度系统(todo)
      • Vue2组件更新流程(todo)
      • 如何学习Vue源码
      • Vue3源码解析系列-响应系统
      • Vue3源码解析系列-渲染系统
      • Vue3源码解析系列-组件化和渲染优化(todo)
      • Vue router源码解析(todo)
    • React源码解析(todo)
    • 微前端
      • qiankun源码解析(todo)
    • Vite源码解析
      • Vite Client源码
      • Vite Server源码(todo)
  • 前端技术
    • javaScript
      • ES6
        • 变量声明
        • 模块化
        • 箭头函数
        • 你不知道的for...of
        • 新的数据结构Set和Map
        • JavaScript异步编程终极解决方案
        • ES6 Class 3a0c0a225a534984aabe9a943c5df975
      • JavaScript Error
      • JavaScript浅拷贝和深拷贝
      • JavaScript闭包
      • JavaScript最佳实践
      • JavaScript设计模式
      • async函数的polyfill
    • 深入理解JavaScript系列
      • JavaScript中的继承
      • JavaScript原始类型和引用类型
      • JavaScript浅拷贝和深拷贝
      • JavaScript手写系列
      • JavaScript之this
      • 词法环境和环境记录
      • JavaScript内存泄漏
      • 执行上下文
      • 从ECMAScript规范中学习this
    • TypeScript
      • TypeScript基础教程
      • Typescript高级操作
      • TypeScript工具类型
      • Typescript手写实现工具类型
      • Typescript总结(思维导图)
    • 浏览器原理
      • 页面渲染原理
      • 浏览器存储
      • JavaScript事件循环
      • 事件循环
      • 跨域
      • DOM事件流
      • 从输入url到页面渲染
      • 判断节点之间的关系及根据节点关系查找节点
      • history API
    • 跨端技术
      • Flutter
        • Flutter布局组件
    • 前端工程化
      • Babel插件开发指南
      • 循环依赖
      • pm2
    • React
      • React 状态管理
      • React组件通讯
      • Redux入门
      • Flux
      • React Hook(todo)
      • Effect
  • 服务器端
    • 计算机网络
      • 应用层
      • 运输层
      • 物理层
      • 数据链路层
      • HTTP缓存
      • HTTPS
      • 网络层
    • NodeJs
      • Node.js
      • nodejs最佳实践
      • 《深入浅出Nodejs》小结
      • mongoose填充(populate)
      • node事件循环
      • Node子进程
      • nestjs从零开始
      • nodejs流
      • Nodejs调试
      • Koa源码解析
    • 服务器
      • 操作系统
      • Linux
      • nginx常用指令
      • nginx常用配置
    • 数据库
      • Mysql常见语法
      • MongoDB Indexes索引
  • 前端安全与性能优化
    • 前端安全
      • 跨站脚本攻击(XSS)
      • 跨站点请求伪造(CSRF)
      • 点击劫持
      • 中间人攻击
      • 越权攻击与JWT
    • 前端性能优化
      • 前端监控系统
      • 前端性能优化总结与分析 7348bba0918645b1899006dc842a64c1
      • 衡量性能的核心指标 0dc15ef127cf4f4a9f1137c377420292
      • 图片懒加载
  • 杂项
    • 其他
      • Git
      • web component框架
      • 实现滚动框的懒加载
      • Stencil指南
    • CSS
      • 定位和层叠上下文
      • BFC
      • 盒模型
      • css选择器
      • css变量
由 GitBook 提供支持
在本页
  • 前言
  • 重要概念
  • 工作区/工作树(Working Tree)
  • 暂存区(Index/Stage)
  • 仓库/存储库(respository)
  • 常用指令
  • 提交代码
  • 远程仓库
  • 查看状态
  • 分支
  • commit管理
  • 比较差异
  • 回滚代码
  • 恢复工作树
  • 追踪
  • 暂存
  • 贮藏
  • 删除工作区未被追踪的文件
  • 查看commit改动
  • 配置
  • 将vscode作为默认编辑器
  • 打开.gitconfig配置文件
  • git别名
在GitHub上编辑
  1. 杂项
  2. 其他

Git

前言

Git 是一个开源的分布式版本控制系统,它在我们日常工作中扮演非常重要的角色,不管是在工作时的团队合作开发项目,还是在平时自己开发项目,都离不开它。Git可以很方便地进行项目版本管理,以便我们可以知道代码哪里变动了,为什么变动了,甚至在一些时候可以回退到以前的代码,相当于“后悔药”。正因为Git对我们的项目开发如此重要,因此我们需要好好地学习一下Git的常用指令。

重要概念

工作区/工作树(Working Tree)

当前工作目录下的区域,此区域分为被追踪的文件和未被追踪的文件。

暂存区(Index/Stage)

暂存区域,此时还没完全提交成功,只是暂存起来,仍然可以将文件恢复。

仓库/存储库(respository)

commit最终存放的地方,此时commit已经保存成功。

常用指令

提交代码

// 追踪代码
git add .
// 提交commit
git commit
// 提交到远程仓库
git push

远程仓库

// 查看所有远程仓库
git remote
// 添加新的仓库
git remote add <name> <url>
// 获取仓库地址
git remote get-url <name>
// 修改仓库地址
git  remote set-url <name> <newUrl>
// 拉取
git pull
// 推送
git push

查看状态

git status

分支

分支管理

// 查看所有分支 / 查看当前分支
git branch
// 切换分支
git checkout <branch>
// 新增分支
git branch <branch>
// 新增分支并切换到该分支
git checkout -b <branch>
// 删除分支
git branch -d <branch>

合并分支

git merge <branch>

commit管理

查看commit日志

git log

将当前代码提交到上次commit/修改上次commit信息

有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend选项的提交命令尝试重新提交。

git add .
git commit --amend

变基

git rebase -i <commitId>
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit

比较差异

// 工作环境与你的暂存区的差异
git diff
// 暂存区域与你最后提交之间的差异
git diff --staged
// 两个分支之间的差异
git diff branchA branchB
// 启动第三方工具
git difftool

回滚代码

// 历史commit、暂存区都会被删除
git reset --hard <commit>
// 历史commit被删除,但是变动的文件会被存放进暂存区中
git reset --soft <commit>
// 历史commit被删除,但是变动的文件会被存放进工作区中
git reset --mixed <commit>

恢复工作树

git restore <file>

前提是代码还没被提交到暂存区,否则需要先将暂存区的文件移到工作树中:

git restore --staged <file>
// or 
git reset HEAD <file>

追踪

追踪文件

add这个命令有些特殊,既可以作为追踪文件的命令,也可以作为暂存代码的命令。

git add <file>

取消追踪

git rm --cache <file>   //不删除本地文件,只取消追踪
git rm -f <file>   //删除本地文件
git rm -r <目录>  // 删除目录

暂存

将变动添加到暂存区

git add .

取消暂存

git restore --staged .

也可以是

git reset HEAD .

贮藏

有时候我们当前分支还未开发完,但是需要切换到其他分支去紧急维修bug,这个时候可以调用stash将当前变动贮藏,等后面再回过头来继续开发。

// 将当前工作区追踪文件和暂存区文件贮藏
git stash / git stash push
// 工作区未被追踪的文件也将被贮藏
git stash -u 
// 查看贮藏的内容
git stash show <name>
// 查看所有贮藏
git stash list
// 移除某项贮藏
git stash drop <name>
// 去除之前的贮藏
git stash apply / git stash pop

删除工作区未被追踪的文件

git clean -f <file>  // 删除文件,不会包含目录
git clean -f -d <path> // 删除包含目录
git clean -n -d <path> // 查看删除时会做的事,如果要预测删除所来的影响可以先执行这个命令

查看commit改动

// 查看commit改动了什么
git show <commit>

配置

将vscode作为默认编辑器

git config --global core.editor "code --wait"

打开.gitconfig配置文件

git config --global -e

git别名

$ git config --global alias.co checkout
$ git config --global alias.br branch
// 之后
git co 等效于 git checkout
git br 等效于 git branch
上一页其他下一页web component框架

最后更新于1年前