git入门操作(2)
文章目录
- git入门操作(2)
- git diff 查看差异
- git diff
- gitignore忽略文件
- 1.在代码仓库创建这个文件
- 2.添加对 log 文件过滤
- 连接远程仓库与ssh配置
- 远程仓库和本地仓库关联
- 步骤
- 分支基本操作
- 步骤
- 命令:
- 合并冲突
- 分支合并逻辑
- 1.新建分支 dev,并且在 main分支的test.txt 中故意和 dev 分支中 test.txt 的同样内容修改成不一样
- 回退和rebase
git入门操作(2)
紧接着上一期,如果没有看过上一期的朋友,可以点进我的主页,找到我的 git 专栏里面,有从安装到使用一步一步的教程。
git diff 查看差异
git diff :显示工作目录与暂存区之间的差异。即,显示自上次 git add 或 git commit 以来,你对文件所做的所有未暂存的(unstaged)更改git diff --cached :显示暂存区与最新提交之间的差异。这可以帮助你查看所有已暂存(staged)但尚未提交的更改。git diff <commit_id1> <commit_id2>:显示两次 commit 的不同git diff <branch1> <branch2>:查看两个分支的不同
git diff
比如,当我现在 add 了一个test.txt,然后再对 test.txt进行修改,就可以就行对比:
修改加入 aaa
对比:
然后我commit,再 add aaa修改到暂存区,这个时候,暂存区和仓库是不一样的,就可以使用
git diff -cached 比较
gitignore忽略文件
.gitignore 文件是 Git 版本控制系统中的一个配置文件,用于指定 Git 应该忽略哪些文件或目录,不对它们进行跟踪或提交。这对于避免将编译生成的中间文件、操作系统特定的配置文件或敏感信息(如密码、密钥)等不必要的内容纳入版本控制非常有用
1.在代码仓库创建这个文件
2.添加对 log 文件过滤
然后我们添加一个 test.log 文件查看是否生效:
使用 git status 查看有没有创建的 test.log 文件,如果没有就成功了
通过合理使用 .gitignore 文件,你可以保持 Git 仓库的整洁和安全性,避免将不必要的文件或敏感信息纳入版本控制。
连接远程仓库与ssh配置
这里我使用 gitee 为例子:
在 gitee 中创建仓库,配置 ssh
ssh-keygen -t rsa //创建公钥
cat ~/.ssh/id_rsa.pub //获取公钥
把获取到的公钥加入到 gitee中去,如果不是第一次配置公钥,在这之前要配置config到自己密钥,也就是在用户/ssh/config中写配置
然后就可以使用 ssh 的方式进行 clone 远程仓库了
远程仓库和本地仓库关联
其实这里就是反过来,先创建远程仓库,然后使用命令把本地的仓库和远程仓库关联起来,本地仓库可以和远程仓库名称不一样。
首先在GitHub或者上创建一个新仓库,然后使用git remote add
命令将本地仓库与远程仓库关联。接着,通过git push
命令将本地仓库的内容推送到远程仓库。最后,通过git pull
命令将远程仓库的修改拉取到本地仓库。git remote -v查看远程仓库和本地仓库关联。
你的本地历史和远程历史不相关。可以使用以下命令来强制合并:git pull origin master --allow-unrelated-histories。这将允许合并不同的历史。然后再尝试推送。
步骤
- 📂 在GitHub上创建新的仓库并复制其地址。
- 💻 使用
git remote add origin [URL]
命令将本地仓库与远程仓库关联。 - 📤 使用
git push -u origin main
命令将本地仓库的内容推送到远程仓库。 - 📥 使用
git pull origin main
命令将远程仓库的修改拉取到本地仓库。 - 🛠️ 注意
git pull
会自动合并远程仓库的修改,如果存在冲突需要手动解决。
分支基本操作
Git中分支的概念及其基本操作,包括分支的创建、切换、合并和删除。通过实际操作演示了如何在不同分支上进行开发和测试,并最终将开发分支合并到主线分支中。
步骤
- 🌳 分支的概念:分支是代码库中的不同版本,可以独立存在并有自己的提交记录,适合团队协作和开发管理。
- 🔄 分支的基本操作:包括创建分支(
git branch
)、切换分支(git checkout
或git switch
)、合并分支(git merge
)和删除分支(git branch -d
)。 - 🛠️ 实际应用场景:多个开发人员可以在各自的分支上进行开发,最后合并到主线代码库中,确保项目的稳定性和高效协作。
- 🚫 避免歧义:Git 2.23版本引入了
git switch
命令,专门用于切换分支,避免与恢复文件操作的歧义。
命令:
git branch :查看分支
git switch :切换分支
git branch 分支名 :创建分支
git merge <branch>:合并分支(把<branch>分支合并到当前分支)
git branch -d 分支名:删除分支
合并冲突
解决分支合并时的冲突。
分支合并逻辑
- 如果两个分支没有重合的部分,Git 会自动完成合并;
- 如果两个分支修改了同一行代码,Git 会产生冲突,需要手动解决;
- 可以使用
git status
和git diff
命令查看冲突文件和具体内容; - 手动编辑文件,留下想要的内容,再提交commit;
- 可以使用
git merge --abort
命令终止合并。
1.新建分支 dev,并且在 main分支的test.txt 中故意和 dev 分支中 test.txt 的同样内容修改成不一样
在main中修改 test.txt 为 111
在 dev 中修改 test.txt 为 222
切换回 main 合并 dev:
回退和rebase
Git revert(回退)
Git revert用于撤销某个特定的提交,并创建一个新的提交来记录这个撤销操作。与reset操作不同,revert不会改变历史提交的顺序或删除任何提交,而是通过在提交历史中插入一个新的提交来“反转”之前的提交。这使得revert成为一种相对安全且不会破坏提交历史完整性的回退方式。
使用场景:
当你需要撤销某个特定的提交,但又不希望删除该提交或改变提交历史时。
当你希望在保留提交历史的同时,修复某个提交中的错误或不当更改。
Git rebase
Git rebase用于将一个分支的更改重新应用到另一个分支上,从而创建一个更线性和清晰的提交历史。通过rebase,你可以将分支的提交历史“移动”到另一个基准点上,使得整个项目的历史更加整洁。
使用rebase的常见场景包括:
合并分支:
当你想要将一个分支的更改合并到另一个分支上时,可以使用rebase来避免产生额外的合并提交。通过rebase,你可以将待合并分支的更改“重放”到目标分支上,从而在目标分支上形成一个干净的提交历史。
更新分支:
在多人协作开发中,当主分支(如master或main)上有新的提交时,你可以使用rebase来将你的分支与主分支同步。这样做的好处是,你的分支将保持线性提交历史,而不会包含与主分支合并产生的额外提交。
清理提交历史:
rebase还可以用于清理提交历史,例如合并多个小的提交或消除不必要的合并提交。这有助于使项目的提交历史更加清晰和易于理解。
需要注意的是,使用rebase可能会改变提交的哈希值。因此,在已经推送到远程仓库的分支上使用rebase时,需要谨慎处理,以避免影响其他开发者的工作。通常建议,在推送更改之前先使用rebase来保持提交历史的线性,但在推送之后则应避免使用rebase来修改已经共享的提交历史。
总的来说,revert和rebase都是Git中非常有用的工具,它们各自有不同的用途和适用场景。在选择使用哪个工具时,需要根据具体的需求和上下文来做出决策。
相关文章:

git入门操作(2)
文章目录 git入门操作(2)git diff 查看差异git diff gitignore忽略文件1.在代码仓库创建这个文件2.添加对 log 文件过滤 连接远程仓库与ssh配置远程仓库和本地仓库关联步骤分支基本操作步骤命令: 合并冲突分支合并逻辑1.新建分支 dev…...

【AI学习】扩散模型学习总结PPT
#1024程序员节|征文# 看了一些文章,大概学习了扩散模型。 《李宏毅 2023 最新 Diffusion Model 原理讲解》(文章链接:https://zhuanlan.zhihu.com/p/692430885) 《What are Diffusion Models?》 https://lilianwen…...
【Python】相等性比较运算(==, is)的学习笔记
1. 相等性比较运算: & is Python中有两种比较运算符和is; 和 is 的主要区别在于它们比较的对象属性不同: 运算符: 比较对象的值或内容是否相等。调用对象的 __eq__() 方法来进行比较。可以被重载(在自定义类中重…...

智慧公厕厂家:智慧公厕建设推动城市公厕智能化变革
随着科技的不断进步,智慧公厕厂家正以创新之力推动着城市公厕的智能化变革。 一、提升用户体验 智慧公厕为使用者带来了前所未有的便利。通过实时显示厕位使用情况,避免了旅客的无效排队,节省了时间。感应式设备如水龙头、洗手液等ÿ…...

大一计算机课程之线性代数
《大一计算机课程之线性代数》 在大一的计算机课程中,线性代数是一门极为重要的基础学科,它就像一把神奇的钥匙,为计算机科学领域的诸多方面开启了智慧之门。 线性代数主要研究线性方程组、向量空间、线性变换等内容。对于计算机专业的学生…...
什么是运动控制器?运动控制器的特点
运动控制器是一种专门用于控制机械系统中运动部件(如电机、驱动器和其他运动元件)的电子设备。它们在自动化、机器人、数控机床、工业自动化和精密控制系统等领域得到了广泛应用。 运动控制器的功能 运动控制器主要负责以下几个方面的功能:…...

[AWS]RDS数据库版本升级
背景:由于AWS上mysql5.7版本不再支持,需要进行版本升级。 吐槽:每年都要来那么几次,真的有病一样,很烦。 步骤一、升级检查 AWS提供了一个python的升级检测脚本,可以按照一下脚本下载测试: [r…...

(Golang)初识Go语言!!为什么选择Go?如何配置Go的开发环境?VS Code如何配置Go环境?
1. Go能做什么? go的优点:运行速度快、并发能力强 Go的应用领域: 区块链应用(BT、分布式账本技术) 后端服务应用 例如: 美团后台流量支撑程序 支撑主站的后台流量(排序、推荐、搜索等…...
【人工智能-初级】第15章 TensorFlow 和 PyTorch 的入门:深度学习的利器
文章目录 一、引言二、TensorFlow 简介2.1 什么是 TensorFlow?2.2 TensorFlow 安装2.3 TensorFlow 构建简单的神经网络2.4 TensorBoard 可视化 三、PyTorch 简介3.1 什么是 PyTorch?3.2 PyTorch 安装3.3 PyTorch 构建简单的神经网络 四、TensorFlow 与 P…...
git禁用 SSL 证书验证
命令 git config --global http.sslVerify false注意:禁用 SSL 证书验证是不安全的,可能会使你的 Git 操作面临中间人攻击的风险。因此,只有在你确信网络环境是安全的,且了解禁用 SSL 验证的后果时,才应该使用这个配置…...
C++之《剑指offer》学习记录(2):sizeof
笔者最近在找工作时,无意间读到了一本名为《剑指offer》的书,粗略翻阅了一下,感觉这将会是一本能让我不再苦恼于笔试和面试“手搓代码”的书。故笔者写下该系列博客记录自己的学习历程,希望能和这本书的读者朋友们一起交流学习心得…...

linux线程 | 同步与互斥 | 线程池以及知识点补充
前言:本节内容是linux的线程的相关知识。本篇首先会实现一个简易的线程池, 然后再将线程池利用单例的懒汉模式改编一下。 然后再谈一些小的知识点,比如自旋锁, 读者写者问题等等。 那么, 现在开始我们的学习吧。 ps:本…...
ArkTS 如何实现表单,地区选择效果
速览 ArkTS实现表单和地区选择效果,可通过Picker组件实现地区选择下拉列表,结合表单组件如Input等构建完整表单。使用ArkTS提供的UI组件库和状态管理机制,可以方便地构建复杂且交云互动的表单界面。 1. ArkTS 表单基础 在ArkTS中,构建表单通常涉及多个UI组件的组合,如I…...
Vite 项目的核心配置- vite.config.ts 和 tsconfig.json 全解析
一、vite.config.ts 详细说明 vite.config.ts 是 Vite 项目的核心配置文件。它允许你自定义 Vite 的行为,以适应你的项目需求。 让我们来看看其中一些重要的配置选项: import { fileURLToPath, URL } from node:url// 使用 defineConfig 帮手函数,这样不用 jsdoc …...

如何使用JMeter进行性能测试的保姆级教程
性能测试是确保网站在用户访问高峰时保持稳定和快速响应的关键环节。作为初学者,选择合适的工具尤为重要。JMeter 是一个强大的开源性能测试工具,可以帮助我们轻松模拟多用户场景,测试网站的稳定性与性能。本教程将引导你通过一个简单的登录场…...
Qt 实战(11)样式表 | 11.1、样式表简介
文章目录 一、样式表简介1、简介2、样式表语法2.1、样式规则2.2、选择器类型2.3、伪状态2.4、设置子控件状态 3、样式表继承与优先级3.1、样式表继承3.2、样式表优先级3.3、解决冲突3.4、样式表层叠 4、总结 前言: 在开发图形用户界面(GUI)应…...

WebGl 多缓冲区和数据偏移
1.多缓冲区 多缓冲区技术通常涉及到创建多个缓冲区对象,并将它们用于不同的数据集。这种做法可以提高数据处理效率,尤其是在处理大量数据或需要频繁更新数据时。通过预先分配和配置多个缓冲区,可以在不影响渲染性能的情况下,快速…...

基于SSM的甜品店销售管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

Spacetime Gaussian Feature Splatting for Real-Time Dynamic View Synthesis
Spacetime Gaussian Feature Splatting for Real-Time Dynamic View Synthesis 摘要 动态场景的新视角合成一直是一个引人入胜但充满挑战的问题。尽管最近取得了很多进展,但如何同时实现高分辨率的真实感渲染、实时渲染和紧凑的存储,依然是一个巨大的…...
PCL 基于FPFH特征描述子获取点云对应关系
目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 FPFH特征计算函数 2.1.2 获取点云之间的对应点对函数 2.1.3 可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...
Monorepo架构: Nx Cloud 扩展能力与缓存加速
借助 Nx Cloud 实现项目协同与加速构建 1 ) 缓存工作原理分析 在了解了本地缓存和远程缓存之后,我们来探究缓存是如何工作的。以计算文件的哈希串为例,若后续运行任务时文件哈希串未变,系统会直接使用对应的输出和制品文件。 2 …...
shell脚本质数判断
shell脚本质数判断 shell输入一个正整数,判断是否为质数(素数)shell求1-100内的质数shell求给定数组输出其中的质数 shell输入一个正整数,判断是否为质数(素数) 思路: 1:1 2:1 2 3:1 2 3 4:1 2 3 4 5:1 2 3 4 5-------> 3:2 4:2 3 5:2 3…...
Android屏幕刷新率与FPS(Frames Per Second) 120hz
Android屏幕刷新率与FPS(Frames Per Second) 120hz 屏幕刷新率是屏幕每秒钟刷新显示内容的次数,单位是赫兹(Hz)。 60Hz 屏幕:每秒刷新 60 次,每次刷新间隔约 16.67ms 90Hz 屏幕:每秒刷新 90 次,…...