Git实战精粹

ops/2024/10/22 5:04:37/

一、快速入门

1. 什么是Git

Git是一个分布式的版本控制软件。

  • 软件,类似于QQ、office、dota等安装到电脑上才能使用的工具
  • 版本控制,类似于毕业论文、写文案、视频剪辑等,需要反复修改和保留原历史数据
  • 分布式
    • 文件夹拷贝
    • 本地版本控制
    • 集中式版本控制
    • 分布式版本控制

2. 为什么要做版本控制

要保留之前所有版本,以便回滚和修改

git_13">3. 安装git

  • 针对不同系统的安装详见:
https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

二、版本控制–Git管理文件夹

想要让git对—个目录进行版本控制需要以下步骤:

  • 进入要管理的目录
    在这里插入图片描述

  • 执行初始化命令

    python">git init
    

    在这里插入图片描述

  • 检测当前目录下文件状态

    python">git status
    注:新增的文件和修改过后的文件都是红色
    

    在这里插入图片描述

  • 管理指定文件(红变绿), .代表当前目录下没有被管理的所有文件。红色:新增的文件/修改了原老文件,其次执行git add .(变绿色)。绿色:git已经管理起来了,其次执行git commit -m ‘描述信息’。最后生成版本。

    python">git add 文件名
    git add .
    

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

  • 个人信息配置:用户名、邮箱【一次即可】
    在这里插入图片描述

    python">git config --global user.email "you@example.com"
    git config --global user.name "Your Name"
    
  • 生成版本

    python">git commit -m '描述信息'
    

    在这里插入图片描述
    如果你对里面文件修改了,那么执行上述命令再次操作让其生成V2版本

  • 查看版本记录

    python">git log
    

    在这里插入图片描述

2.1 Git 三大区域

在这里插入图片描述

2.2 回滚

  • 回滚至之前版本

    python">git log
    git reset --hard 版本号
    

    在这里插入图片描述
    第三个功能就会被git自动替换掉

  • 回滚至之后版本

    python">git reflog
    git reset --hard 版本号
    

    在这里插入图片描述

2.3 分支

分支可以给使用者提供多个环境,意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
在这里插入图片描述

  • 查看分支

    python">git branch
    

    在这里插入图片描述

  • 创建分支

    python">git branch 分支名称
    

    在这里插入图片描述

  • 切换分支

    python">git checkout 分支名称
    

    在这里插入图片描述

  • 分支合并

    python">首先切换到要合并的分支上:git chechout master
    git merge 想要合并的分支        git merge bug    把bug分支合并到master
    注意:切换分支在合并
    

    在这里插入图片描述
    在这里插入图片描述
    紧急修复完后其实,bug分支就没有用了

  • 删除分支

    python">git branch -d 分支名称
    

    在这里插入图片描述

2.4 工作流

在这里插入图片描述
创建dev分支,在dev分支上去写开发的新功能,开发没有问题了,合并到master分支

github_113">2.5 基于github代码托管

在这里插入图片描述

  • 注册github账号
  • 创建仓库
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 本地代码推送

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

python"># 1.给远程仓库起别名
git remote add origin 远程仓库地址
# 2.向远程推送代码
git push -u origin 分支

2.5.1 初次在新电脑下载代码

python"># 1.克隆远程仓库代码
git clone 远程仓库地址(内部已实现git remote add origin 远程仓库地址)
# 2. 切换分支
git checkout 分支名称
  • 在新电脑下载完代码后,继续开发
python"># 1.切换到dev分支进行开发
git checkout dev
# 2.把master分支合并到dev(仅一次)
git merge master
# 3.修改代码
# 4.提交代码
git add .
git commit -m 'xxx'
git push origin dev

2.5.2 在原先旧电脑继续写代码

python"># 1.切换到dev分支进行开发
git checkout dev
# 2.拉代码
git pull origin dev
# 3.继续开发
# 4.提交代码
git add .
git commit -m 'xxx'
git push origin dev

2.5.3 在新电脑上继续开发

python"># 1.切换到dev分支进行开发
git checkout dev
# 2.拉下最新代码(不必填clone,只需要通过pull获取最新代码即可)
git pull origin dev
# 3.继续开发
# 4.提交代码
git add .
git commit -m 'xxx'
git push origin dev

开发完毕,上线

python"># 1.将dev分支合并到master,进行上线
git checkout master
git merge dev
git push origin master# 2.把dev分支也推送到远程
git checkout dev
git merge master
git push origin dev

2.6.4 忘记推送代码

注:忘记了推送代码,后面合并起来可能会发生冲突

  • 在新电脑开发
python"># 写一个a1.py编辑
vim a1.py
# 内容为:在新电脑开发了50%功能,有女神约饭忘记提交代码

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

  • 在旧电脑开发
    在这里插入图片描述
python"># 在旧电脑写了其他的功能,写了个a2.py,a1.py
vim a2.py
内容为:其他功能
vim a1.py
内容为:在旧电脑写了其他功能

在这里插入图片描述

  • 再到新电脑拉代码(可能会产生一些冲突,因为:因为有一些代码提交到本地了,还没有提交到github)
    在这里插入图片描述
    因为在旧电脑编写了a1,a2在新电脑没有编写a2所以a2会自动合并,a1在新旧电脑都有编辑,可能改的同一行就可能产生冲突
  • 解决冲突
  1. 在新电脑打开a1-----》vim a1.py,会发现把两个记录保留合并了

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

  1. 解决完后,继续开发
    在新电脑上 vim a1.py,内容为:在公司开发了50%,再继续开发50%

在这里插入图片描述

  1. 最后
    git add .
    git commit -m 'xxx'
    git push origin dev

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

  1. 上线,把dev合并到master,然后把master推送到线上
python">补充:
git pull origin dev # 从代码仓库拉代码
等价于下面两条命令:
git fetch origin dev
git merge origin/dev
为什么看下图:

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

2.6 rebase(变基)应用场景

作用:可以保持git提交记录简洁,不分叉

  • 多个记录整合成一个记录
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

注意事项:合并的是那些没有提交到仓库的那些记录


http://www.ppmy.cn/ops/103877.html

相关文章

Spring Cloud Consul 与 Eureka 对比:如何选择最佳服务发现工具

Spring Cloud Consul 与 Eureka 对比:如何选择最佳服务发现工具 服务发现是微服务架构中的核心组件之一,它允许服务之间在动态环境中彼此发现和通信。Spring Cloud 提供了多个服务发现工具,其中 Consul 和 Eureka 是最常用的两个。本文将深入…

Typescript 使用 Jest 进行单元测试

参考文章:快速开始Jest 安装所需依赖:npm install --save-dev ts-node jest types/jest ts-jest Jest 转换 TypeScript 代码需要ts-node添加并配置 Jest 配置文件:jest.config.ts // jest.config.ts module.exports {// TypeScript 代码预…

VIVO 相机HDR拍照流程拆解

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: HDR 场景下发 3 帧拍照请求HDR 3帧拍照请求帧(478,479 480)HDR 3帧 result callback帧HDR 算法处理5.算法编解码处理HDR 拍照lo…

插入排序:直接插入排序、希尔排序详细说明

插入排序 基本思想:直接插入排序是⼀种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到⼀个已经排好序的有序序列中,直到所有的记录插入完为止,得到⼀个新的有序序列。 在玩扑克牌整理手中…

文本数据分析-(TF-IDF)(2)

文章目录 一、TF-IDF与jieba库介绍1.TF-IDF概述2.jieba库概述 二、TF-IDF与jieba库的结合1.结合2.提取步骤 三,代码实现1.导入必要的库读取文件:3.将文件路径和内容存储到DataFrame4.加载自定义词典和停用词5.分词并去除停用词 TF-IDF(Term F…

Git的简单使用

Git 是一个分布式版本控制系统,广泛用于软件开发。以下是一些常用的 Git 命令和使用方法: 安装 Git 你可以从 Git 官方网站 Git Downloads 下载并安装 Git。 基本配置 安装完成后,首先需要进行一些基本配置: git config --gl…

Datawhale X 李宏毅苹果书AI夏令营 学习笔记

学习日志 日期: 2024年8月30日 今日学习内容: 今天,我继续学习了深度学习中的优化算法,并且着重理解了如何利用动量法、RMSProp以及Adam等高级优化器来提高模型训练的效率和效果。 1. 动量法的理解: 我学习了动量…

如何使用Hive构建高校考试分析系统:大数据技术在教育领域的应用

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…