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

1. 远程仓库

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

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

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

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

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

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

1.1 新建远程仓库

1、在Github上新建项目仓库

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

1.2 克隆远程仓库

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

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

1.3 向远程仓库推送

本地已经 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

1.4 拉取远程仓库

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

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

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

使用如下:

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

2. 配置Git

2.1 忽略特殊文件

在⽇常开发中,我们有些⽂件不想或者不应该提交到远端,⽐如保存了数据库密码的配置⽂件,那怎么让 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 停止跟踪它。

2.2 停止跟踪已跟踪的文件

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

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

image.png

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

2.2 追踪被忽略的文件

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

image.png

2.3 给命令配置别名

在我们使⽤ 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

3. 标签管理

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

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

3.1 创建标签

在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

3.2 删除标签

如果标签打错了,也可以进行删除。
删除标签对应的命令为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.rhkb.cn/news/355510.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaSE 面向对象程序设计初级 静态static 包package 常量final 代码块 代码实操理论内存原理详解

目录 static(静态) 静态的特点 应用示例 静态变量 静态方法 注意事项 内存图 重新认识main方法 包 什么是包 使用导包在什么时候 final关键字 常量 命名规范 细节&#xff08;重点&#xff09; 权限修饰符 代码块 局部代码块 构造代码块 静态代码块 个人号…

vue中实现百度地图全国与省市地图切换

前言 本文主要是用于示例全国地图&#xff0c;点击省市地图直接跳转到该省市地图并展示&#xff0c;可以拓展在地图上显示标记点&#xff08;本文未做示例&#xff09;&#xff0c;后续有完整代码&#xff0c;但是由于需要与本来项目业务代码进项分割&#xff0c;可能会有些问题…

多模态大模型面对误导性问题:看懂图片也会答错,一骗就中招

多模态大语言模型&#xff08;MLLMs&#xff09;因其在视觉理解和推理方面的突出表现&#xff0c;例如生成详细的图像描述和回答复杂的问题等&#xff0c;逐渐成为近期AI研究的热点。 然而&#xff0c;Bunny 团队的最新研究发现&#xff0c;尽管许多MLLMs对视觉内容能够正确理…

RocketMQ快速入门:集成spring, springboot实现各类消息消费(七)附带源码

0. 引言 rocketmq支持两种消费模式&#xff1a;pull和push&#xff0c;在实际开发中这两种模式分别是如何实现的呢&#xff0c;在spring框架和springboot框架中集成有什么差异&#xff1f;今天我们一起来探究这两个问题。 1. java client实现消息消费 1、添加依赖 <depen…

方舟云康亏损收窄:三年近10亿销售成本,平均付费及月活仍大幅承压

《港湾商业观察》施子夫 三度递表后&#xff0c;终于通过聆讯&#xff0c;方舟云康控股有限公司(以下简称&#xff0c;方舟云康)有望近期内挂牌港交所。方舟云康的国内运营主体为广州方舟云康信息科技集团有限公司、广州方舟医药有限公司。 值得关注的是&#xff0c;亏损的难…

Python日志管理利器:如何高效管理平台日志

一、为什么需要日志管理&#xff1f; 日志是应用程序的重要组成部分&#xff0c;它记录了应用程序的运行状态、错误信息以及用户交互等关键信息。良好的日志管理可以帮助开发人员及时发现和解决问题&#xff0c;提高应用程序的稳定性和可靠性。 项目在本地开发调试时&#xf…

vscode字符多行自动增长插件。

多行字符自动增长插件CharAutoIncre 当你使用shiftalt选中了多行,并输入了’1’,这时这几行都变成了’1’. 这时你可以选中&#xff08;shift左键&#xff09;为’1’的这几行, 接下来按下shiftaltq此时’1’变为了’12345’自增长的样式。 同时本插件支持字符’a-z,A-Z’。 目…

【知识图谱】基于neo4j开发的信息化文档分析系统(源码)

一、项目介绍 一款全源码&#xff0c;可二开&#xff0c;可基于云部署、私有部署的企业级知识库云平台&#xff0c;一款让企业知识变为实打实的数字财富的系统&#xff0c;应用在需要进行文档整理、分类、归集、检索、分析的场景。 为什么建立知识库平台&#xff1f; 助力企业…

IDEA中 pom.xml 设置自动提示

IDEA中 pom.xml 自动提示 IDEA中 pom.xml 自动提示设置如下&#xff1a; file–>Settings–>Build,Execution…–>Build Tools–>Maven–>Repositories 会看到类似表格的画面&#xff0c;内容是你的maven地址&#xff0c;选中后&#xff0c;右边有个Update的按…

Python酷库之旅-第三方库openpyxl(01)

目录 一、 openpyxl库的由来 1、背景 2、起源 3、发展 4、特点 4-1、支持.xlsx格式 4-2、读写Excel文件 4-3、操作单元格 4-4、创建和修改工作表 4-5、样式设置 4-6、图表和公式 4-7、支持数字和日期格式 二、openpyxl库的优缺点 1、优点 1-1、支持现代Excel格式…

鄂州职业大学2024年成人高等继续教育招生简章

鄂州职业大学&#xff0c;作为一所享有盛誉的高等学府&#xff0c;一直以来都致力于为社会培养具备专业技能和良好素养的优秀人才。在成人高等继续教育领域&#xff0c;该校同样表现出色&#xff0c;为广大渴望继续深造、提升自身能力的成年人提供了宝贵的学习机会。 随着社会…

椭圆的矩阵表示法

椭圆的矩阵表示法 flyfish 1. 标准几何表示法 标准几何表示法是通过椭圆的几何定义来表示的&#xff1a; x 2 a 2 y 2 b 2 1 \frac{x^2}{a^2} \frac{y^2}{b^2} 1 a2x2​b2y2​1其中&#xff0c; a a a 是椭圆的长半轴长度&#xff0c; b b b 是椭圆的短半轴长度。 2.…

一文带你全面详细了解安全运维

一、安全运维-网络 1、IP地址相关 IP地址属于网络层地址&#xff0c;用于标识网络中的节点设备。 IP地址由32bit构成&#xff0c;每8bit一组&#xff0c;共占用4个字节。 IP地址由两部分组成&#xff0c;网络位和主机位。 IP地址分类&#xff1a; 类别网络位子网掩码私有地…

云原生Kubernetes系列项目实战-k8s集群+高可用负载均衡层+防火墙

一、Kubernetes 区域可采用 Kubeadm 方式进行安装&#xff1a; 名称主机部署服务master192.168.91.10docker、kubeadm、kubelet、kubectl、flannelnode01192.168.91.11docker、kubeadm、kubelet、kubectl、flannelnode02192.168.91.20docker、kubeadm、kubelet、kubectl、flan…

Linux 一键部署 Nginx1.26.1 + ModSecurity3

前言 ModSecurity 是 Apache 基金会的一个开源、高性能的 Web 应用程序防火墙(WAF),它提供了强大的安全规则引擎,用于检测和阻止各种攻击行为,如 SQL 注入、XSS 跨站点脚本攻击等。而 nginx 是一个高性能的 Web 服务器,常用于处理大量的并发请求,具有很高的负载均衡能力…

从0开始C++(三):构造函数与析构函数详解

目录 构造函数 构造函数的基本使用 构造函数也支持函数重载 构造函数也支持函数参数默认值 构造初始化列表 拷贝构造函数 浅拷贝和深拷贝 析构函数 总结 练习一下ヽ(&#xffe3;▽&#xffe3;)&#xff89; 构造函数 构造函数的基本使用 构造函数是一种特殊的成…

HTML(17)——圆角和盒子阴影

盒子模型——圆角 作用&#xff1a;设置元素的外边框为圆角 属性名&#xff1a;border-radius 属性值&#xff1a;数字px/百分比 也可以每个角设置不同的效果&#xff0c;从左上角顺时针开始赋值&#xff0c;没有取值的角与对角取值相同。 正圆 给正方形盒子设置圆角属性…

WordPress实时搜索插件Ajax Search Lite,轻松替代默认搜索功能

WordPress自带的默认搜索功能是跳转到搜索结果页&#xff0c;如果你想要实时搜索功能&#xff0c;特别是在问答中心显示搜索功能&#xff0c;那么建议使用这个WordPress实时搜索插件Ajax Search Lite&#xff0c;它可以在文章、页面、自定义类型文章中搜索标题、内容、摘要、自…

DP:完全背包+多重背包问题

完全背包和01背包的区别就是&#xff1a;可以多次选 一、完全背包&#xff08;模版&#xff09; 【模板】完全背包_牛客题霸_牛客网 #include <iostream> #include<string.h> using namespace std; const int N1001; int n,V,w[N],v[N],dp[N][N]; //dp[i][j]表示…

队列 + 宽搜(BFS)

例题一 解法&#xff1a; 算法思路&#xff1a; 层序遍历即可~ 仅需多加⼀个变量&#xff0c;⽤来记录每⼀层结点的个数就好了。 例题二 解法&#xff08;层序遍历&#xff09;&#xff1a; 算法思路&#xff1a; 在正常的层序遍历过程中&#xff0c;我们是可以把⼀层的结点…