Git--Part3--远程操作 配置 标签管理

news2024/11/26 2:29:37

theme: nico

远程仓库

Git 是分布式版本控制系统,同⼀个 Git 仓库,可以分布到不同的机器上。怎么分布呢?

最早,肯定只有⼀台机器有⼀个原始版本库,此后,别的机器可以 “克隆” 这个原始版本库,⽽且每台机器的版本 库其实都是⼀样的,并没有主次之分。

你肯定会想,⾄少需要两台机器才能玩远程库不是?但是我只有⼀台电脑,怎么玩? 其实⼀台电脑上也是可以克隆多个版本库的,只要不在同⼀个⽬录下。

不过,现实⽣活中是不会有⼈在⼀台电脑上搞⼏个远程库玩,因为⼀台电脑上搞⼏个远程库完全没有意义,⽽且硬盘挂了 会导致所有库都挂掉。

实际情况往往是这样,找⼀台电脑充当服务器的⻆⾊,每天24⼩时开机,其他每个⼈都从这个“服务器”仓库克隆⼀份到⾃⼰的电脑上,并且各⾃把各⾃的提交推送到服务器仓库⾥,也从服务器仓库中拉取别⼈的提交。

完全可以⾃⼰搭建⼀台运⾏ Git 的服务器,不过为了学 Git 先搭个服务器绝对是⼩题⼤作。好在这个世界上有个叫 GitHub 的神奇的⽹站,从名字就可以看出,这个⽹站就是提供 Git 仓库托管服务的,所以,只要注册⼀个GitHub账号,就可以免费获得 Git 远程仓库。 Github 是国外的⽹站,速度比较慢,代理加速问题得自己解决。

新建远程仓库

1、在Github上新建项目仓库

image.png
2、填写仓库得基本信息
image.png
3、创建成功如下
image.png

克隆远程仓库

克隆远程仓库就是把刚才在Github上创建得仓库 下载到本地电脑上。克隆仓库使用得命令是git clone命令。
首先需要知道远程仓库得URL。

1、在刚才建好得远程仓库中找到远程仓库得链接,复制下来(复制https下的即可,使用https协议进行拉取,比较方便,ssh协议设计到密钥比麻烦)
image.png
2、在本地电脑进行克隆,使用Git客户端或者终端,输入git clone 复制的url即可拉取。
image.png
这样就将远程仓库拉取到本地了。

向远程仓库推送

本地已经 clone 成功远程仓库后,我们便可以向仓库中提交内容,例如新增⼀个 file.txt ⽂件。向里面写点东西。

image.png
然后向远程仓库进行提交。

image.png

提交时要注意,如果我们之前设置过全局的 name 和 e-mail,这两项配置需要和 Github上配置的⽤⼾名和邮箱⼀致,否则会出错。如果不一样,则需要重新配置。关于用户名和邮箱得配置,在第Git第一篇博客中已经说过了~

查看Github得用户名和邮箱:
点击右上角头像->设置选项
image.png

image.png

这里已经将内容提交⾄本地仓库中,如何将本地仓库的内容推送⾄远程仓库呢,需要使⽤ git push 命令。

  • git push <远程主机名> <本地分⽀名>:<远程分⽀名>
  • 如果本地分⽀名与远程分⽀名相同,则可以省略冒号:git push <远程主机名> <本地分⽀名>

此时我们要将本地的 main 分⽀推送到 origin 主机的 main 分⽀,则可以使用git push origin main进行推送即可。(这里得主分支叫main,和master是一模一样得,只是名字不一样)
image.png

在Git中,“origin”是默认的远程仓库名称。当你克隆一个仓库时,Git会自动将这个远程仓库命名为“origin”。这个名称只是一个别名,用来方便地引用远程仓库的URL。你可以为远程仓库设置其他名称,但“origin”是默认且最常见的。

推送完成后,在Github上就能看到新推送得file.txt文件了。
image.png

拉取远程仓库

当有不同得人像代码仓库中进行推送时,会造成一种现在,就是远程仓库得版本领先于你本地仓库得版本。

比如,这里再Github上修改了README文件,导致远程仓库的版本领先于比本地仓库的版本。
image.png
此时,远程仓库是要领先于本地仓库⼀个版本,为了使本地仓库保持最新的版本,我们需要拉取下远 端代码,并合并到本地。Git 提供了git pull命令,该命令⽤于从远程获取代码并合并本地的版本。格式如下:

  • git pull <远程主机名> <本地分⽀名>:<远程分⽀名>
  • 如果远程分⽀是与当前分⽀合并,则冒号后⾯的部分可以省略。git pull <远程主机名> <远程分⽀名>

使用如下:

image.png
这样,本地仓库就和本地仓库处于同一个版本了~

配置Git

忽略特殊文件

在⽇常开发中,我们有些⽂件不想或者不应该提交到远端,⽐如保存了数据库密码的配置⽂件,那怎么让 Git 知道呢?

在 Git ⼯作区的根⽬录下创建⼀个特殊的 .gitignore ⽂件,然后把要忽略的⽂件名填进去,Git 就会⾃动忽略这些⽂件了。

不需要从头写 .gitignore ⽂件,在创建仓库时我们已经指定了.gitignore文件了。

如果当时创建没有选择这个选择,在⼯作区创建⼀个也是可以的。⽆论哪种⽅式,最终都可以得到⼀个完 整的 .gitignore ⽂件

.开头的文件在操作系统(如Linux和macOS)中被称为“隐藏文件”。这些文件通常包含配置或系统信息,不会在默认情况下显示在目录列表中。这种机制主要用于防止用户意外修改或删除关键的配置文件。

  • 如果是Linux系统,输入ls -al就可以看见了。
  • 如果是windows系统,在资源管理器中要显示隐藏文件才能看见。如下:
    image.png

使用示例:
打开.gitignore文件,如果已经配置如下:

image.png
这就意味着,所有以.d .slo .lo…结尾的文件都不会让Git进行追踪和管理。

如果不想让Git管理txt文件,在.gitignore添加如下配置即可。

image.png

修改完.gitignore文件后,需要把这个文件推送到远程才会生效。

image.png

可以验证一下.gitignore的能力。在工作区修改file.txt。然后使用git status查看仓库状态,如下:

image.png
这时发现,file.txt文件还是被Git追踪了。难道是.gitignore失效了?

在工作区新增一个.txt文件。
image.png
发现新增的这个文件没有被Git追踪。
这是因为 file.txt 已经在仓库中,它将继续被跟踪,除非你明确告诉 Git 停止跟踪它。

停止跟踪已跟踪的文件

使用下面的命令进行停止追踪。
git rm --cached 文件名
然后提交推送即可。

比如停止追踪file.txt
image.png
此时,再次修改file.txt文件,Git就不会进行追踪了~

image.png

如果希望整个仓库都不在追踪file.txt了,那么就推送到远程仓库,直接从远程仓库中删除了,如果只希望在本地仓库停止追踪,就无需push了。

追踪被忽略的文件

有些时候,你就是想添加⼀个文件到 Git,但由于这个⽂件被 .gitignore忽略了,根本添加不了,那么可以⽤ -f 选项强制添加。
比如,在.gitignore中已经忽略了所有的txt文件。但是此时就是想添加一个file.txt到远程仓库中,这时就可以使用-f选项了。
git add -f 文件名

image.png

给命令配置别名

在我们使⽤ Git 期间,有些命令太⻓了。Git⽀持对命令进⾏简化!
比如将最常用的git status 简化为git st
使用下面命令即可:
git config --global alias.st status
–global 参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有⽤。如果不加,那只针对当前的仓库起作⽤。

在alias.后面加上别名即可。
现在 git st就生效了。

image.png
在比如配置一下git log,让只显示最后一次提交信息即可。
原本的命令是:git log -1。配置后git last
使用下面的命令进行配置。
git config --global alias.last 'log -1'
配置完后的效果:

image.png

标签管理

标签 tag ,可以简单的理解为是对某次 commit 的⼀个标识,相当于起了⼀个别名。例如,在项⽬ 发布某个版本的时候,针对最后⼀次 commit 起⼀个 v1.0 这样的标签来标识里程碑的意义。

这相较于难以记住的 commit idtag 很好的解决这个问题,因为 tag ⼀定要给⼀个让⼈容易记住,且有意义的名字。当我们需要回退到某个重要版本时,直接使⽤标签就能很快定位到。

创建标签

在Git中打标签⾮常简单,⾸先,切换到需要打标签的分⽀上。然后,输入命令 git tag [name] 就可以打⼀个新标签。

image.png
使用git tag 就能查看所有的标签了。

image.png
默认标签是打在最新提交的 commit 上的。Git也支持在指定的commit上打标签。

比如下面给指定的commit打标签。
1、首先,找到历史的commit
git log --pretty=oneline --abbrev-commit

image.png
2、对Ininial commit这次提交打标签
image.png

标签不是按时间顺序列出,⽽是按字⺟排序的

可以⽤ git show [tagname] 查看标签信息。

image.png

Git 还提供可以创建带有说明的标签,⽤-a指定标签名,-m指定说明⽂字,格式为:
git tag -a [name] -m "XXX" [commit_id]

image.png

删除标签

如果标签打错了,也可以进行删除。
删除标签对应的命令为git tag -d [tag]
image.png

因为创建的标签都只存储在本地,不会⾃动推送到远程。所以,打错的标签可以在本地安全删除。 如果要推送某个标签到远程,在push的时候要加对应的参数。
git push origin [tagnema]

比如推送V1.1标签。
image.png
推送完后,在Github上就能看到新推送上去的标签了。

image.png

image.png
如果本地有多个标签,也可以一次性全部推送到远端。
git push origin --tags即可。

image.png
远端就可以查看了

image.png

如果标签已经推送到远程,要删除远程标签的话,需要从从本地删除,然后从远程删除。

比如删除远程标签V0.0。

1、先从本地删除V0.0标签。

image.png
2、使用git push 从远程删除。格式如下:
git push origin :refs/tags/v0.0

image.png
此时,远程仓库中的V0.0版本就成功删除了。

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1833854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

php配合fiddler批量下载淘宝天猫商品数据分享

有个做电商的朋友问我&#xff0c;每次上款&#xff0c;需要手动去某宝去搬运商品图片视频&#xff0c;问我能不能帮忙写个脚本&#xff0c;朋友开口了&#xff0c;那就尝试一下 首先打开某宝&#xff0c;访问一款商品&#xff0c;找出他的数据来源 通过观察我们发现主图数据来…

网络学习(三)TCP三次握手、四次挥手,及Wireshark抓包验证

目录 一、什么是 TCP 三次握手&#xff1f;二、什么是 TCP 四次挥手&#xff1f;三、Wireshark抓包验证3.1 如何捕获三次握手、四次挥手3.2 TCP 三次握手的记录3.3 数据传输3.4 TCP 四次挥手的记录 一、什么是 TCP 三次握手&#xff1f; TCP&#xff08;Transmission Control …

设计模式(三)代理模式

目录 一、什么是代理模式 二、静态代理 1、定义 2、代码 2.1、接口 2.2、被代理对象 2.3、代理对象 2.4、测试 三、动态代理 1、定义 2、代码 2.1、接口 2.2、目标对象 2.3、代理对象 2.4、测试 一、什么是代理模式 代理模式(Proxy Pattern)是一种结构性模式。代理模…

学习笔记——网络管理与运维——SNMP(SNMP原理)

四、SNMP原理 SNMP的工作原理基于客户端-服务器模型。其中&#xff0c;网络管理系统是客户端&#xff0c;而网络设备是服务器。客户端向服务器发送请求消息(即"Get"或"Set"命令)来获取或修改服务器的信息。服务器收到请求消息后&#xff0c;会返回相应的响…

物联网技术-第2章-物联网技术架构

目录 1.1为什么需要物联网架构 1.2系统体系结构的基本概念 1.3物联网工作过程与人的智能处理问题过程比较 1.4物联网的四层体系架构 1.4.1物联网感知层 1.4.1.1感知层要解决的问题 1.4.1.2感知层的形态 1.4.2物联网网络层 1.4.2.1网络层相关概念 1.4.2.2计算机网络的逻…

深度学习神经网络协同过滤模型(NCF)与用户协同过滤(UCF)的区别

一、效果图 点我查看在线demo 二、启发式推荐系统 推荐系统的核心是根据用户的兴趣需求&#xff0c;给用户推荐喜欢的内容。常用的推荐算法有启发式推荐算法&#xff0c;可分为基于用户的 协同过滤&#xff0c;基于物品的协同过滤。 1、基于用户的协同过滤&#xff08;UCF…

Api Post快速上手教程

Apipost快速上手教程可以按照以下步骤进行&#xff1a; 一、准备工作 访问Apipost官网下载并安装Apipost客户端&#xff0c;或者选择使用其Web端版本。注册并登录Apipost账号&#xff0c;以便更好地管理和使用你的项目。官网&#xff1a;Apipost-API 文档、设计、调试、自动化…

Matlab初识:什么是Matlab?它的历史、发展和应用领域

目录 一、什么是Matlab&#xff1f; 二、Matlab的历史与发展 三、Matlab的应用领域 四、安装和启动Matlab 五、界面介绍 六、第一个Matlab程序 七、总结 一、什么是Matlab&#xff1f; Matlab 是由 MathWorks 公司开发的一款用于数值计算、可视化以及编程的高级技术计算…

第十七课,海龟画图习题课(一)

图案一&#xff0c;半圆 import turtleturtle.circle(50, 180)turtle.left(90)turtle.forward(100) 图案二&#xff0c;同心圆 import turtleturtle.circle(100)turtle.right(90)turtle.penup()turtle.forward(50)turtle.pendown()turtle.left(90)turtle.circle(150) 图案三&am…

6.1触发器的创建、删除和使用

6.1.1 触发器概述 触发器是一个被指定关联到表的数据库对象&#xff0c;与表的关系密切&#xff0c;不需要用户调用&#xff0c;在一个表的特定事件出现时将会被激活&#xff0c;此时某些MySql语句会自动执行。 触发器用于实现数据库的完整性&#xff0c;具有以下特点&#xff…

【Python机器学习实战】----基于AdaBoost分类树模型、梯度提升分类树模型、Bagging分类树模型以及随机森林分类模型对空气质量等级进行预测

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

前端学习笔记100篇之002:Webpack简明教程(持续完善中)

文章目录 1. **安装和初始化**2. **创建和配置入口文件**3. **编写和配置Webpack配置文件**4. **打包和运行项目** Webpack是一个静态模块打包工具&#xff0c;适用于前端项目构建和模块化开发。Webpack通过从入口文件构建依赖图&#xff0c;然后打包相关的模块&#xff0c;最终…

什么是小语言模型?

介绍 近年来&#xff0c;人工智能领域取得了重大进展&#xff0c;尤其是在自然语言处理领域。GPT-3 和 PaLM 等大型语言模型因其出色的能力而备受关注&#xff0c;新一波小型语言模型正在兴起&#xff0c;它们在性能和效率之间提供了有希望的平衡。 什么是小语言模型&#xf…

[AIGC] 图论基础入门

图论是数学的一个分支&#xff0c;旨在研究图&#xff08;graph&#xff09;的属性和应用。这是一个跨学科领域&#xff0c;因为图论可以用于描述和解决各种实际问题。如社交网络分析&#xff0c;电脑网络&#xff0c;生物网络等。 文章目录 什么是图&#xff1f;图的基本性质L…

应急便携式气象观测站

TH-BQX5自然灾害&#xff0c;如台风、暴雨、洪涝、干旱等&#xff0c;给人们的生命财产安全带来了巨大威胁。在应对这些灾害时&#xff0c;准确的气象观测数据是制定有效应对策略的基础。近年来&#xff0c;应急便携式气象观测站在自然灾害的监测和预警中发挥了越来越重要的作用…

python GUI开发: tkinter选项卡,移动滑块,颜色选择框,文本对话框,对话输入框,通用消息框模块用法详解

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Vue57-组件的自定义事件_解绑

给谁绑的自定义事件&#xff0c;就找谁去触发&#xff1b;给谁绑的自定义事件&#xff0c;就找谁去解绑&#xff1b; 一、解绑自定义事件 1-1、解绑一个自定义事件 到student.vue组件中去解绑。 1-2、解绑多个自定义事件 使用数组来解绑多个。 1-3、解绑所有的自定义事件 二、…

Linux-远程访问及控制

一、SSH远程管理 SSH&#xff08;Secure Shell&#xff09;是一种安全通道协议&#xff0c;主要用来实现字符界面的远程登录、远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理&#xff0c;其中包括用户登录时输入的用户口令。与早期的 Telent&#xff08;远程登录…

计算机毕业设计Python+Vue.js知识图谱音乐推荐系统 音乐爬虫可视化 音乐数据分析 大数据毕设 大数据毕业设计 机器学习 深度学习 人工智能

开发技术 协同过滤算法、机器学习、LSTM、vue.js、echarts、django、Python、MySQL 创新点协同过滤推荐算法、爬虫、数据可视化、LSTM情感分析、短信、身份证识别 补充说明 适合大数据毕业设计、数据分析、爬虫类计算机毕业设计 介绍 音乐数据的爬取&#xff1a;爬取歌曲、…

DFS 迷宫

个人感觉DFS没有递归那么烧脑 简单迷宫 如何接受二维数组 先构建A[MAXN][MAXN]&#xff0c;人后二重循环 #include <iostream> #include <vector> #include <cmath> #include <string> #include <cstring> using namespace std; const int N…