当前位置: 首页 > news >正文

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 最长连续递增序列

题意理解&#xff1a; 给定一个未经排序的整数数组&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r&#xff08;l < r&#xff09;确定&#xff0c;如果对于每个 l < i < r&#xff0c;都有 nums[i…...

力扣题目训练(8)

2024年2月1日力扣题目训练 2024年2月1日力扣题目训练404. 左叶子之和405. 数字转换为十六进制数409. 最长回文串116. 填充每个节点的下一个右侧节点指针120. 三角形最小路径和60. 排列序列 2024年2月1日力扣题目训练 2024年2月1日第八天编程训练&#xff0c;今天主要是进行一些…...

理解JAVA EE设计模式

理解JAVA EE设计模式 在Web应用程序的设计和开发阶段,开发人员在开发类似的项目时可能会遇到相似的问题。每名开发人员可能会遇到的问题找出不同或相似的解决方案。但是,这导致一些时间和精力浪费在为相似的问题寻找解决方案上。因此,要啊节省时间和精力,需要记录常见问题…...

GEE:梯度提升树(Gradient Boosting Tree)回归教程(样本点、特征添加、训练、精度、参数优化)

作者:CSDN @ _养乐多_ 对于分类问题,这个输出通常是一个类别标签 ,而对于回归问题,输出通常是一个连续的数值。回归可以应用于多种场景,包括预测土壤PH值、土壤有机碳、土壤水分、碳密度、生物量、气温、海冰厚度、不透水面积百分比、植被覆盖度等。 本文将介绍在Google…...

k8s-资源限制与监控 15

资源限制 上传实验所需镜像 Kubernetes采用request和limit两种限制类型来对资源进行分配。 request(资源需求)&#xff1a;即运行Pod的节点必须满足运行Pod的最基本需求才能 运行Pod。 limit(资源限额)&#xff1a;即运行Pod期间&#xff0c;可能内存使用量会增加&#xff0…...

【Ubuntu】在.bashrc文件中误设置环境变量补救方法

这里是vim也不在PATH中了&#xff0c;因为 解决方法就是在输入vim之后提示的vim路径下用vim打开该文件&#xff0c;然后改回来...

Imgui(1) | 基于imgui-SFML改进自由落体小球

Imgui(1) | 基于imgui-SFML改进自由落体小球 0. 简介 使用 SFML 做2D图形渲染的同时&#xff0c;还想添加一个按钮之类的 GUI Widget, 需要用 Dear Imgui。由于 Imgui 对于2D图形渲染并没有提供类似 SFML 的 API, 结合它们两个使用是一个比较好的方法, 找到了 imgui-SFML 这个…...

Linux-Vim的使用,快速入门Vim,Linux入门教程,精讲Linux

Vim的三种模式 输入模式&#xff0c;键入 i 或 a 或 o 都可以进入输入模式。 普通模式&#xff0c;打开Vim默认的模式。 命令模式&#xff0c;键入 : 进入命令模式。 注意&#xff1a;按下 ESC 可以从输入模式或命令模式退回到普通模式 退出 vim &#xff0c;需要在普通模式下…...

目标检测 | 卷积神经网络(CNN)详细介绍及其原理详解

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;是一种深度学习模型&#xff0c;主要用于图像识别和计算机视觉任务。它的设计灵感来自于生物学中视觉皮层的工作原理。CNN的核心思想是通…...

机器人学、机器视觉与控制 上机笔记(第一版译文版 2.1章节)

机器人学、机器视觉与控制 上机笔记&#xff08;第一版译文版 2.1章节&#xff09; 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&#xff0c;输出杨辉三角的前 n 行。 如果你不知道什么是杨辉三角&#xff0c;可以观察样例找找规律。 ## 输入格式 ## 输出格式 ## 样例 #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 中&#xff0c;markdown文档最终都会转换成为 html文件&#xff0c;我们在访问的时候&#xff0c;也是直接访问的 xxx.html 文件。而且&#xff0c;markdown文档会被作为 [vue单文件] 进行处理&#xff0c;因此&#xff0c;我们我们可以在文档中使用 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语言的世界里&#xff0c;函数是一等公民&#xff0c;可以被赋值给变量&#xff0c;这种特殊的变量就是我们今天要探讨的主角——函数指针。函数指针作为C语言中一种强大的工具&#xff0c;允许我们以间接方式调用函数&#xff0c;从而实现动态绑定、回调函数、策略模式等多…...

《UE5_C++多人TPS完整教程》学习笔记1 ——《P2 关于本课程(About This Course)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P2 关于本课程&#xff08;About This Course&#xff09;》 的学习笔记&#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&#xff0c;UP主&#xff08;也是译者&…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...