技术分享
首页
  • JavaScript

    • 构造函数和原型
    • Cookie和Session
    • Object.create(null)和{}
    • TypeScript配置
    • typescript入门到进阶
  • 框架

    • Vue-Router
    • React基础入门
  • 其它

    • Http协议
    • 跨域问题总结
  • 分析Promise实现
  • Axios源码分析
  • Webpack原理
  • vueRouter源码分析
  • Vue

    • Vite快速搭建Vue3+TypeScript项目
    • Cordova打包Vue项目的问题
    • Vue将汉字转为拼音,取出首字母
    • h5项目问题总结
  • JavaScript

    • new Function
  • 后端

    • Node.js中使用Crypto生成Token
    • Body-Parser处理多层对象的问题
  • 其它

    • 项目Demo汇总
    • Vuepress+Vercel搭建个人站点
    • 项目中能用到的
    • husky规范代码提交
  • Mongoose基础
  • Multer文件上传中间件的使用
  • JavaScript

    • 浅谈两数全等
    • JavaScript进制转换
    • 手写bind,apply,call和new
  • 算法

    • 数组去重和排序
    • 数组扁平化
    • 斐波那契数列
  • JavaScript 数据结构
  • 其它

    • webpack面试题
    • vite面试题
    • svg和canvas的优缺点
    • TypeScript面试题
    • Vue常见面试题
  • 计算机网络

    • 数据链路层
    • 网络层
  • Git的使用
  • Nginx的使用
  • CentOS7安装Nginx
  • 正则表达式
  • SEO搜索引擎优化
  • Serverless介绍
友链
GitHub (opens new window)

刘誉

总有人要赢,为什么不能是我
首页
  • JavaScript

    • 构造函数和原型
    • Cookie和Session
    • Object.create(null)和{}
    • TypeScript配置
    • typescript入门到进阶
  • 框架

    • Vue-Router
    • React基础入门
  • 其它

    • Http协议
    • 跨域问题总结
  • 分析Promise实现
  • Axios源码分析
  • Webpack原理
  • vueRouter源码分析
  • Vue

    • Vite快速搭建Vue3+TypeScript项目
    • Cordova打包Vue项目的问题
    • Vue将汉字转为拼音,取出首字母
    • h5项目问题总结
  • JavaScript

    • new Function
  • 后端

    • Node.js中使用Crypto生成Token
    • Body-Parser处理多层对象的问题
  • 其它

    • 项目Demo汇总
    • Vuepress+Vercel搭建个人站点
    • 项目中能用到的
    • husky规范代码提交
  • Mongoose基础
  • Multer文件上传中间件的使用
  • JavaScript

    • 浅谈两数全等
    • JavaScript进制转换
    • 手写bind,apply,call和new
  • 算法

    • 数组去重和排序
    • 数组扁平化
    • 斐波那契数列
  • JavaScript 数据结构
  • 其它

    • webpack面试题
    • vite面试题
    • svg和canvas的优缺点
    • TypeScript面试题
    • Vue常见面试题
  • 计算机网络

    • 数据链路层
    • 网络层
  • Git的使用
  • Nginx的使用
  • CentOS7安装Nginx
  • 正则表达式
  • SEO搜索引擎优化
  • Serverless介绍
友链
GitHub (opens new window)
  • Git的使用
    • 初始化
    • 基本使用
    • 高级用法
      • 关联远程库
      • 强制覆盖远程库
      • 版本回退
      • merge 和 rebase
      • 配置 Git ssh
    • 常见问题
      • git clone xxx 项目克隆下来之后 使用 git remote -v 查看 没有远程库的地址
      • git pull 出错
  • SEO搜索引擎优化
  • 常用cmd和linux命令
  • 代码片段
  • Serverless
  • CentOS7安装Nginx
  • GitHub Actions 自动化部署
  • Nginx的使用
  • 正则表达式
  • vscode调试总结
  • 其它
coderly
2021-03-22

Git的使用

# Git 的使用

# 初始化


 

# cd 到文件夹中
git init
1
2

# 基本使用

Git设置

用户提交时,会被提交的信息

  • git config --global user.name "au":设置提交代码时的用户名
  • git config --global user.email au@163.com:设置提交代码时的用户邮箱

分支操作

查看当前分支及分支切换

  • git branch:查看本地分支,分支前带有 * 号的时当前所在分支
  • git branch [name]:已当前分支为基准创建名字为 [name] 的新分支,创建完成后,默认分支切换到 [name] 分支,
    例如: git branch dev:创建dev分支
  • git branch -d [name]:删除 [name] 分支,
    例如:git branck -d dev, 删除 dev 分支,如果删除失败,一般是需要切换到其它分支,再删除需要删除的分支
  • git checkout [name]:分支切换到 name 分支,
    例如:git checkout dev,切换到 dev 分支

代码提交

  • git add .:将文件提交到暂存区,.代表全部文件(除了.gitignore 忽略的文件)
  • git commit -m 'xxxx':将暂存区的文件提交到分支,xxx是提交信息
  • git status:查看工作区和暂存区的状态(工作区就是你屏幕上能看到的文件,暂存区就是被 git 暂时管理的那部分状态文件)
  • git log: 查看提交记录,按回车加载下一条记录,输入 q 退出查看
  • git push origin master:将本地 master 分支 推送到 远程(origin) master 分支,原本写法是git push origin master:master(git push <远程主机名> <本地分支名>:<远程分支名>)

拉取代码

第一次克隆项目,以及在远程代码更新后,更新代码到本地(提交代码前如有变动执行 git pull )

  • git clone <repo>:克隆仓库到本地,
    例如:git clone git@github.com:coderlyu/vite-frontend-template.git
  • git pull:拉取代码

文件暂存

常用在当前分支开发未完成,要切换到别的分支修复 bug 时

  • git stash:暂存(存储在本地,并将项目本次操作还原)
  • git stash pop:使用上一次暂存,并将这个暂存删除,使用该命令后,如果有冲突,终端会显示
  • git stash list:查看所有的暂存
  • git stash clear:清空所有的暂存
  • git stash drop [<stash>]:删除某一个暂存,在中括号里面放置需要删除的暂存 ID

标签操作

常用来对某个已发布的版本进行打标签

  • git tag 或 git tag -l:查看本地分支标签
  • git tag [标签名]:给当前分支打标签,
    例如:git tag v1.0.0,给当前分支打上 v1.0.0 标签
  • git tag --delete [标签名]:删除本地某个标签,
    例如:git tag --delete v1.0.0, 删除v1.0.0这个标签

# 高级用法

# 关联远程库

  • git remote -v:查看已关联的远程库
  • git remote show [remote]:显示某个远程仓库的信息
  • git remote add [shortname] [url]:添加远程版本库,
    例如:git remote add origin git@github.com:coderlyu/vite-frontend-template.git,添加一个名字为:origin,地址为:git@github.com:coderlyu/vite-frontend-template.git 的远程库
  • git remote rm [name]: 删除关联名字为 [name] 的远程库

# 强制覆盖远程库

  • git push origin master[:master] --force: 本地 master 分支强制覆盖 远程 master 分支,
    例如:git push origin master --force

# 版本回退

# 1. git reset

作用是修改 HEAD 的位置,即将 HEAD 指向的位置改变为之前存在的某个版本,reset 之后,目标版本之后的版本不见了
例如:

  • git reset --hard [hash]:回退到 [hash] 之前的版本,hash 为提交记录的哈希值(一般取前四位),
    例如:git reset --hard 5d50,回退到提交记录哈希值为5d50前版本

reset 成功后一般需要将当前更改强制覆盖远程, git push -f origin master,此时因为远程分支和本地分支不在同一个版本,需要将远程的覆盖,所以加上 -f(--force的简写)

# 2. git revert

用于“反做”某一个版本,以达到撤销该版本的修改的目的,所有提交记录都可以看到,不会像 reset 一样把后面的提交信息删除
例如:如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法

  • git revert -n [hash]:不需要 [hash] 这次提交的操作
    例如:git revert -n 5d50,表示不需要提交记录哈希值为 5d50 这次的操作,同时 5d50 这条记录还在,只是不需要这次提交做的更改

revert 成功后一般也需要将当前更改强制覆盖远程, git push -f origin master,此时因为远程分支和本地分支不在同一个版本,需要将远程的覆盖,所以加上 -f(--force的简写)

# merge 和 rebase

  1. merge

需要合并的两个分支,会形成一个新的 commit 提交(比如:Merge branch 'dev' 的提交记录)
如果在可视化界面上查看的话,可以看到合并的分支和被合并的分支有交集

从分支 dev 合并到分支 master

  • git checkout master,切换到 master 分支(该分支是你合并的分支或者说保存的分支)
  • git merge dev,dev 分支合并到 master 分支,一般来说合并完成后,dev 分支可以被删除,同时如果有新的开发需求,继续从 master 分支创建新的分支开发
  1. rebase

需要合并的两个分支, 不会形成一个新的 commit 提交
如果在可视化界面上查看的话,合并和被合并的分支是在一条线上

从分支 dev 合并到分支 master

  • git checkout master,切换到 master 分支(该分支是你合并的分支或者说保存的分支)
  • git rebase dev,dev 分支合并到 master 分支

# 配置 Git ssh

使用 https 克隆每次 fetch 和 push 代码都需要输入账号和密码;ssh 默认是每次 fetch 和 push 代码都不需要输入账号和密码

  1. 设置 user.name 和 user.email

  2. 检查是否已经存在 ssh

    • mac:
      1. cd ./.shh
      2. ls
      3. 查看是否有 id_isa 和 id_isa.pub
    • windows:
      1. cd ./.shh
      2. dir
      3. 查看是否有 id_isa 和 id_isa.pub
  3. 生成密钥

    • ssh-keygen -t rsa -C "au@163.com":"au@163.com" 是你自己的邮箱
    • 如果不需要加密码的话,连续 3 个回车,就能得到 id_rsa 和 id_rsa.pub 文件
  4. 添加密钥到 ssh-agent

    确保 ssh-agent 是可用的

    • ssh-add ~/.ssh/id_rsa,添加生成的 SSH key 到 ssh-agent
  5. 登陆 Github, 添加 ssh

    点击右上角头像 -> Settings -> SSH and GPG Keys

将刚才生成的 id_rsa.pub 里面的内容拷贝到这里,新增一个 New SSH key
图片

# 常见问题

# git clone xxx 项目克隆下来之后 使用 git remote -v 查看 没有远程库的地址

GitHub 未添加当前电脑的 ssh,登陆Github, 添加 ssh 即可

# git pull 出错

可能的原因有:

  • 存在冲突,需要你手动去解决冲突的问题
#Git
上次更新: 2021/04/03, 13:42:27
SEO搜索引擎优化

SEO搜索引擎优化→

最近更新
01
代码片段
04-22
02
koa全家桶
03-29
03
mocks项目复盘
03-29
更多文章>
Theme by Vdoing | Copyright © 2021-2022 coderly | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式