Git教程I
Git教程I
- 本地Git
- 创建git仓库
- 将修改存到暂存区
- 将暂存区提交到当前分支
- 查看提交历史
- 回退版本
- 恢复到更晚的版本
- 创建新分支
- 切换分支
- 简单的分支合并
- 冲突分支合并
- 不使用fast forward: --no-ff
- 远程Git
- 连接远程仓库
- 将本地分支上传到远程仓库
- 从远程仓库拉取
本地Git
学习如何使用本地Git。
创建git仓库
git init可以在当前位置创建一个git仓库。
也可以用git clone创建并克隆一个远程仓库。
将修改存到暂存区
假设你添加/修改/删除了文件a.cpp。可以用git status来看你的电脑在修改了哪些内容。untracked就是还没有存在暂存区的。
可以用git add a.cpp来将这个修改添加到暂存区。这之后再用git status就能看到已经存了。
将暂存区提交到当前分支
当前分支就是现在所在的分支。默认创建后是master或main。你总是在某一个分支上。
用git commit -m 'NIHAO'来将暂存区内容提交到当前分支。
查看提交历史
多次进行“修改-add-commit”后,你就已经多次commit了。现在可以用git log来看每次commit。每次commit有commit、Author、Date等信息。"commit"后的十六进制数是这个commit的编号。一次commit也就是一个版本。
可以用git blame a.cpp查看一个文件的改变历史。
回退版本
用git reset --hard 12345ab来回退到以12345ab开头的编号的commit版本。这会修改你的电脑里相应的文件。
commit编号至少填前四位。
恢复到更晚的版本
刚才我们学习了如何回到更早的版本。那么如何回到更晚的版本?
同样用git reset --hard …命令就可以了。
如果不知道版本commit编号,可以用git reflog查看commit对应的编号(在该行的开头)。
创建新分支
每次commit可以视为一个树上的节点,随着commit的进行,一根树枝在不断生长。我们也可以在一个节点创建一个新分支。这之后,我们可以切换到这个分支上,在这个分支上生长,同时其它分支没有改变。
用git branch apple来创建一个名为apple的分支(这时还没有切换过去)。
切换分支
用git checkout apple来切换到apple分支。同样,也可以git checkout master切换回来。
用git branch查看现在有的所有分支,以及当前在哪个分支。
切换分支之后,电脑里的文件也会相应修改。
简单的分支合并
假设你在某个版本A切换到了新分支apple,并在这上面提交了一些版本。那么现在apple就领先master若干个版本。
如果想让master追上apple,可以先切换到master分支,然后git merge apple就行了。
如果想删除apple分支,可以用git branch -d apple。
一定要注意的是,这种分支合并只用于merge到的分支是另一个的后代的情况,git会使用fast-forward模式。
如果你merge了一个更落后的分支(即祖先节点),那么什么也不会发生。
冲突分支合并
如果你merge了一个既有落后也有领先的分支(即既不是祖先也不是后代),那么就不能fast-forward合并。这时merge的话,会进入MERGING模式,你可以在命令行上面看到。
可以用git status总览合并与冲突的情况。有些文件是both modified,也就是说它在两个分支里做了不同的修改。
现在查看电脑里的both modified文件,其内容被改为了类似diff结果的格式。
事实上,这也相当于untracked modified文件。我们在把它修改成想要的内容后git add就可以commit了。commit之后,MERGING模式也结束了。
可以使用git mergetool来修改文件。这里介绍vimdiff的使用方法:聚焦于下方窗口,这个是最后保存的文件。用]c命令定位到不同之处。用:diffg l来采用本地的方案(在屏幕左上方窗口的),:diffg r采用远程方案(屏幕右上方窗口),:diffg b采用base方案(屏幕正上方的)。也可以自己修改调整。最后:wqa全部保存退出。
现在可以用git log --graph --pretty=oneline来看分支合并的示意图。
不使用fast forward: --no-ff
合并到后代时,如果想保持自己的分支和后代分支不在一个节点上,可以加上--no-ff参数。这会新建一个commit,可以用-m参数指定提示信息。这么做的效果看起来像自己先提交了一个没有修改的commit,然后冲突合并(且完全采用)后代。
远程Git
学习如何使用远程Git。
连接远程仓库
git remote命令可以显示远程仓库。如果是用git init创建的本地仓库,那么应该还没有连接,什么也不会显示。
用git remote add grape git@github.com:myjs999/gittest.git来连接到一个存在的GitHub仓库。你也可以连接到别的仓库。grape是本地的一个远程仓库的代号,你也可以改成别的名字,比如origin。
将本地分支上传到远程仓库
假设本地有已经commit的分支。
用git push grape来将当前分支上传到远程仓库。会在远程仓库自动创建同名分支。
如果远程仓库已经有这个分支,那么只要本地版本领先于远程版本,上传就能成功。
从远程仓库拉取
git pull grape apple可以将远程仓库的apple分支内容拉取到当前分支。这相当于做了一次merge。如果远程仓库领先于本地,那么拉取就能直接成功。否则可以参考冲突合并。
相关文章:
Git教程I
Git教程I 本地Git创建git仓库将修改存到暂存区将暂存区提交到当前分支查看提交历史回退版本恢复到更晚的版本创建新分支切换分支简单的分支合并冲突分支合并不使用fast forward: --no-ff 远程Git连接远程仓库将本地分支上传到远程仓库从远程仓库拉取 本地Git 学习如何使用本地…...
containerd中文翻译系列(十)镜像验证
下面将介绍默认的 "bindir"ImageVerifier插件实现。 要启用图像验证,请在 containerd 配置中添加类似下面的一段: [plugins][plugins."io.containerd.image-verifier.v1.bindir"]bin_dir "/opt/containerd/image-verifier/b…...
假期day9(2024/2/14)
获取数据库查询的值并调用值使用函数:sqlite3_get_table 在回调函数中获取数据库查询值,无法在其他函数调用:使用函数sqlite3_exec(db, sql, select_callback, &flag, &errmsg) 创建表 create table if not exists 表名…...
Leetcode 674 最长连续递增序列
题意理解: 给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l < i < r,都有 nums[i…...
力扣题目训练(8)
2024年2月1日力扣题目训练 2024年2月1日力扣题目训练404. 左叶子之和405. 数字转换为十六进制数409. 最长回文串116. 填充每个节点的下一个右侧节点指针120. 三角形最小路径和60. 排列序列 2024年2月1日力扣题目训练 2024年2月1日第八天编程训练,今天主要是进行一些…...
理解JAVA EE设计模式
理解JAVA EE设计模式 在Web应用程序的设计和开发阶段,开发人员在开发类似的项目时可能会遇到相似的问题。每名开发人员可能会遇到的问题找出不同或相似的解决方案。但是,这导致一些时间和精力浪费在为相似的问题寻找解决方案上。因此,要啊节省时间和精力,需要记录常见问题…...
GEE:梯度提升树(Gradient Boosting Tree)回归教程(样本点、特征添加、训练、精度、参数优化)
作者:CSDN @ _养乐多_ 对于分类问题,这个输出通常是一个类别标签 ,而对于回归问题,输出通常是一个连续的数值。回归可以应用于多种场景,包括预测土壤PH值、土壤有机碳、土壤水分、碳密度、生物量、气温、海冰厚度、不透水面积百分比、植被覆盖度等。 本文将介绍在Google…...
k8s-资源限制与监控 15
资源限制 上传实验所需镜像 Kubernetes采用request和limit两种限制类型来对资源进行分配。 request(资源需求):即运行Pod的节点必须满足运行Pod的最基本需求才能 运行Pod。 limit(资源限额):即运行Pod期间,可能内存使用量会增加࿰…...
【Ubuntu】在.bashrc文件中误设置环境变量补救方法
这里是vim也不在PATH中了,因为 解决方法就是在输入vim之后提示的vim路径下用vim打开该文件,然后改回来...
Imgui(1) | 基于imgui-SFML改进自由落体小球
Imgui(1) | 基于imgui-SFML改进自由落体小球 0. 简介 使用 SFML 做2D图形渲染的同时,还想添加一个按钮之类的 GUI Widget, 需要用 Dear Imgui。由于 Imgui 对于2D图形渲染并没有提供类似 SFML 的 API, 结合它们两个使用是一个比较好的方法, 找到了 imgui-SFML 这个…...
Linux-Vim的使用,快速入门Vim,Linux入门教程,精讲Linux
Vim的三种模式 输入模式,键入 i 或 a 或 o 都可以进入输入模式。 普通模式,打开Vim默认的模式。 命令模式,键入 : 进入命令模式。 注意:按下 ESC 可以从输入模式或命令模式退回到普通模式 退出 vim ,需要在普通模式下…...
目标检测 | 卷积神经网络(CNN)详细介绍及其原理详解
前言:Hello大家好,我是小哥谈。卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,主要用于图像识别和计算机视觉任务。它的设计灵感来自于生物学中视觉皮层的工作原理。CNN的核心思想是通…...
机器人学、机器视觉与控制 上机笔记(第一版译文版 2.1章节)
机器人学、机器视觉与控制 上机笔记(第一版译文版 2.1章节) 1、前言2、本篇内容3、代码记录3.1、新建se23.2、生成坐标系3.3、将T1表示的变换绘制3.4、完整绘制代码3.5、获取点*在坐标系1下的表示3.6、相对坐标获取完整代码 4、结语 1、前言 工作需要&a…...
关于vue2+antd 信息发布后台不足的地方
有的写法可以cv 1.序号递增 {title: "序号",customRender: (text, record, index) > ${index 1},align: "center",}, 2.关于类型 {title: "类型",dataIndex: "type",align: "center",customRender: function (t) {sw…...
Ubuntu+Anaconda 常用指令记录
Anaconda 使用指令记录 1 创建环境 conda create -n name pythonx.x(python版本自己指定)例如 conda create --name myenv: 创建名为"myenv"的新环境。 conda activate myenv: 激活名为"myenv"的环境。 conda deactivate: 退出当前环境。 2 删除环境 c…...
P5732 【深基5.习7】杨辉三角 python解法
# 【深基5.习7】杨辉三角 ## 题目描述 给出 n<20,输出杨辉三角的前 n 行。 如果你不知道什么是杨辉三角,可以观察样例找找规律。 ## 输入格式 ## 输出格式 ## 样例 #1 ### 样例输入 #1 6 ### 样例输出 #1 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5…...
VitePress-12-markdown中使用vue的语法
前言 VitePress 中,markdown文档最终都会转换成为 html文件,我们在访问的时候,也是直接访问的 xxx.html 文件。而且,markdown文档会被作为 [vue单文件] 进行处理,因此,我们我们可以在文档中使用 vue 语法&…...
“bound drug/molecule”or “unbound drug/molecule”、molecule shape、sketching是什么?
“bound drug/molecule”or “unbound drug/molecule” For clarity, the following terms will be used throughout this study: “bound drug/molecule” (or “unbound drug/molecule”) refers to the drug/molecule that is bound (or unbound) to proteins [48]. 意思就是…...
深入理解C语言中的函数指针:概念、机制及实战应用
在C语言的世界里,函数是一等公民,可以被赋值给变量,这种特殊的变量就是我们今天要探讨的主角——函数指针。函数指针作为C语言中一种强大的工具,允许我们以间接方式调用函数,从而实现动态绑定、回调函数、策略模式等多…...
《UE5_C++多人TPS完整教程》学习笔记1 ——《P2 关于本课程(About This Course)》
本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P2 关于本课程(About This Course)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者&…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
