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主(也是译者&…...
抖音下载器实战指南:告别手动保存,批量获取无水印内容
抖音下载器实战指南:告别手动保存,批量获取无水印内容 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fal…...
别再自己造轮子了!用BouncyCastle库在C#里快速搞定SM4国密加解密
用BouncyCastle在C#中高效实现SM4国密算法 金融级数据安全已成为现代企业系统的刚需,而国密算法作为我国自主研发的密码体系核心,正在政务、金融等高安全要求场景中快速普及。SM4作为国密标准中的对称加密算法,其128位分组长度和32轮非线性迭…...
Cadence SPB17.4导入外部封装后,原理图封装属性不更新?一个属性编辑框解决你的困扰
Cadence SPB17.4原理图封装属性更新难题:从数据库到设计的完整解决方案 当你花费数小时将力创封装库成功导入Cadence PCB Editor后,满心欢喜地打开原理图进行DRC检查,却发现那些熟悉的"PCB Footprint Not Found"错误依然存在——这…...
为AI智能体项目选择稳定且多模型的后端API供应商
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为AI智能体项目选择稳定且多模型的后端API供应商 在开发AI智能体或自动化工作流时,工程师们面临的核心挑战之一是如何为…...
前端工程化:Vite与Rollup构建优化
前端工程化:Vite与Rollup构建优化 大家好,我是欧阳瑞(Rich Own)。今天想和大家聊聊前端工程化这个重要话题。作为一个全栈开发者,构建工具是日常开发中不可或缺的一部分。今天就来分享一下Vite和Rollup的构建优化技巧…...
5分钟快速上手:AMD Ryzen处理器专业级调试工具SMUDebugTool完全指南
5分钟快速上手:AMD Ryzen处理器专业级调试工具SMUDebugTool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址…...
从八皇后到N皇后:深度优先搜索(DFS)的经典实战与优化技巧
从八皇后到N皇后:深度优先搜索(DFS)的经典实战与优化技巧 在国际象棋的64格棋盘上放置8个互不攻击的皇后,这个看似简单的谜题背后隐藏着组合数学的深邃奥秘。当我们将问题扩展到NN棋盘上的N皇后问题时,它便成为了检验算法效率的绝佳试金石。本…...
高通手机刷机救砖不求人:搞懂这10个关键分区,自己就能救活黑砖
高通手机刷机救砖实战指南:10个致命分区解析与精准修复 当你的爱机突然变成一块"黑砖",屏幕再无反应,甚至连充电指示灯都彻底熄灭时,那种绝望感每个玩机爱好者都深有体会。不同于普通的系统崩溃,黑砖状态意…...
TQVaultAE:为《泰坦之旅》周年版打造的无限仓库管理工具
TQVaultAE:为《泰坦之旅》周年版打造的无限仓库管理工具 【免费下载链接】TQVaultAE Extra bank space for Titan Quest Anniversary Edition 项目地址: https://gitcode.com/gh_mirrors/tq/TQVaultAE 还在为《泰坦之旅》中堆积如山的传奇装备无处存放而烦恼…...
数字信号处理算法在实时系统中的应用【附代码】
✨ 长期致力于实时高速相干光通信、低复杂度数字信号处理模块、并行化研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)无乘法器的恒模算法并行化设计&…...
