【Git原理与使用三】Git远程仓库

文章目录

  • [1. 理解分布式版本控制系统 Git](#1. 理解分布式版本控制系统 Git)
  • [2. 远程仓库](#2. 远程仓库)
  • [3. 配置 Git](#3. 配置 Git)
    • [3.1 忽略特殊文件](#3.1 忽略特殊文件)
      • [1)git check-ignore 检查是否被忽略命令](#1)git check-ignore 检查是否被忽略命令)
      • [2)添加 .gitignore 文件的办法](#2)添加 .gitignore 文件的办法)
    • [3.2 给命令配置别名](#3.2 给命令配置别名)
      • [1)git config alias. 起别名命令](#1)git config alias. 起别名命令)
      • 2)试验
  • [4. 标签管理](#4. 标签管理)
    • [4.1 一些指令](#4.1 一些指令)
      • [1)git tag 标签指令](#1)git tag 标签指令)
      • [2)git show 查看标签指令](#2)git show 查看标签指令)
      • [3)git push origin 推送标签指令](#3)git push origin 推送标签指令)
    • [4.2 本地标签操作](#4.2 本地标签操作)
    • [4.3 推送标签操作](#4.3 推送标签操作)

1. 理解分布式版本控制系统 Git

目前所说的所有内容(工作区,暂存区,版本库等等),都是在本地!也就是在自己的笔记本或者计算机上。而 Git 其实是分布式版本控制系统!

分布式版本控制系统 Git 的核心特点是每个开发者在本地都拥有一个完整的代码仓库副本,包括代码的完整历史记录。在 Git 中,每个开发者在克隆(clone)仓库时,都会获得一个完整的仓库副本,包括所有分支、标签和提交记录。这意味着即使没有网络连接,开发者也可以在本地进行开发操作。

分布式版本控制系统 Git 通常也有一台充当"中央服务器"的电脑,用来方便"交换"大家的修改,有了这个"中央服务器"的电脑,这样就不怕本地出现什么故障了。

2. 远程仓库

Git 是分布式版本控制系统,同一个 Git 仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以 "克隆" 这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。

下面将用码云https://gitee.com/作为远程仓库的相关内容讲解

2.1 新建远程仓库

打开链接,注册登录账号后,在右上角+号选择新建仓库,并填写各种选项,其中特别注意的是合并的操作: git 的merge是危险的,需要进行一个PR(合并申请单Pull Request),管理员同意才能完成合并

2.2 克隆远程仓库

将远程仓库复制到本地仓库中,这里首先讲解一些指令,然后通过2种方法讲解克隆:

1)一些指令

一)git clone 克隆命令

主要功能是从远程仓库(如 GitHub、GitLab、码云等)获取完整的代码仓库副本,包括代码文件、提交历史、分支和标签等。克隆完成后,你在本地会得到一个完整的 Git 仓库,可以独立进行开发操作。

bash 复制代码
git clone [Https:xxxx]
二)git remote 命令

用于管理远程仓库的命令,允许你查看、添加、修改和删除与本地仓库关联的远程仓库地址。

bash 复制代码
git remote  # 查看远程仓库名
git remote -v  # 列出所有远程仓库的名称和对应的 URL
git remote show origin  # 展示远程分支情况
git remote prune origin  # 移除陈旧的本地分支,之后再自行删除多余的本地分支即可

2)克隆的两种办法

一)HTTPS协议

对使用没有什么特殊要求,直接 git clone 即可

二)SSH协议

SSH 协议使用了公钥加密和公钥登陆机制,体现了其实用性和安全性,使用此协议需要将公钥放上服务器,由 Git 服务器进行管理,才能配置成功。

在码云的个人点击设置,左侧有安全设置->SSH公钥,在此添加公钥(标题可以随便起)。不添加直接克隆就会报错。

配置SSH的方法可以直接参考码云提供的办法,点击克隆/下载,选择SSH,就可以看到码云的教程,这里要注意的是一定要完成提交代码身份配置,否则可能会存在提交上的问题。

在centos中按照1(一直回车即可)、2步输入指令,然后将打印出来的全部复制到码云SSH公钥中提交,之后就可以正常克隆了。

2.3 向远程仓库推送

1)配置

提交时要注意,如果我们之前设置过全局的 name 和 e-mail,这两项配置需要和 gitee 上配置的用户名和邮箱一致,否则会出错。这就需要重新配置下,并要注意需要和 gitee 上配置的用户名和邮箱一致。

2)git push 推送指令

将本地分支的提交记录同步到远程仓库的对应分支,它会将本地分支的新提交推送到远程分支,更新远程仓库的状态。

如果分支是一样的话,本地分支名称:远程分支名称中后面的远程分支名称可以不用写

bash 复制代码
git push <remote-name> <branch-name>:<remote-branch-name>
git push  # 建立连接后可以直接用段命令
git push origin <newbranch>  # 本地分支创建连接后直接push该分支到远端,就可以在远端创建该分支并建立连接

3)推送操作

在本地仓库中新建文件夹,添加提交到仓库后,用 git push origin master:master 推送到远端仓库,这时就可以在仓库中看到记录了

注意:

本地仓库和远端仓库之间一定要有联系才能相互沟通,而这个联系其实在克隆仓库时就会自动生成

2.4 拉取远程仓库

远程仓库要是领先于本地仓库一个版本,为了使本地仓库保持最新的版本,需要拉取下远端代码,并合并到本地。

1)git pull 拉取命令

将本地分支的提交记录同步到远程仓库的对应分支,它会将本地分支的新提交推送到远程分支,更新远程仓库的状态。

bash 复制代码
git pull <remote-name> <branch-name>:<remote-branch-name>
git pull  # 也可以直接pull,前提是已经建立了连接

2)拉取操作

首先直接在码云上修改test.txt(只是为了演示,一般情况下都不能在远端直接修改),远程仓库就领先一个版本,然后用 git pull origin master:master 指令拉取即可

3. 配置 Git

3.1 忽略特殊文件

在日常开发中,有些文件不想或者不应该提交到远端,比如保存了数据库密码的配置文件,那怎么让 Git 知道呢?在 Git 工作区的根目录下创建一个特殊的 .gitignore 文件,然后把要忽略的文件名填进去,Git 就会自动忽略这些文件了。

1)git check-ignore 检查是否被忽略命令

用于检查指定的文件或路径是否被 .gitignore文件中的规则忽略

bash 复制代码
git check-ignore <filename>

2)添加 .gitignore 文件的办法

一)初始化时选择选项

创建仓库时选择初始化仓库,就可以自动添加 .gitignore 文件

二)手动添加 .gitignore 文件

在仓库根目录下创建 .gitignore 文件,然后进入编辑,编辑规则如下:

bash 复制代码
# #是注释
# 忽略的文件有几个要推送
# 使用 ! ,表示排除规则,用于取消忽略某个文件或目录
# / 表示目录分隔符,指定路径

# 忽略的文件
*.so  # *匹配任意字符,直接写文件里代表忽略该文件(以.so结尾)
file/  # 忽略当前目录下file文件夹及里面全部内容
/file/*.tmp  # 忽略file目录下所有.tmp文件

# 不忽略的文件
!b.so  # 不忽略b.so文件

# 忽略隐藏文件
.*  # 忽略以.开头的隐藏文件
!.gitignore  # 排除 .gitignore 文件本身

此时创建a.sob.so,并都写入hello git,查看状态发现没有修改过a.so,所以 .gitignore 就生效了

检查a.so为什么被忽略了,用 git check-ignore -v a.so指令查看

还有一个办法可以强制添加提交,用 git add -f c.so强制推送,但不太好,会破坏.gitignore规则,因此不推荐使用

3.2 给命令配置别名

在我们使用 Git 期间,有些命令太长了,而git支持对命令进行简化!

1)git config alias. 起别名命令

可以给命令起别名,方便简短输入,支持 --global选项全局修改

bash 复制代码
git config --global alias.<别名> <命令>

2)试验

通过 git config --global alias.st status 为status起别名,初学不建议起别名

4. 标签管理

标签tag ,可以简单的理解为是对某次 commit 的一个标识,相当于起了一个别名。例如,在项目发布某个版本的时候,针对最后一次commit 起一个 v1.0 这样的标签来标识里程碑的意义。另外相较于难以记住的commit id , tag 很好的解决这个问题,因为tag 一定要给一

个让人容易记住,且有意义的名字。当我们需要回退到某个重要版本时,直接使用标签就能很快定位到。

4.1 一些指令

1)git tag 标签指令

用于创建、列出、删除或验证标签

-a 创建带有注释的标签选项

-d 删除本地标签选项

bash 复制代码
git tag  # 查看所有标签
git tag <tagname>  # 对最新一次提交创建标签
git tag <tagname> <commit id>  # 对之前提交的id创建标签
git tag -a <tagname> -m "message"  # 创建带有注释的标签
git tag -d <tagname>  #删除本地标签

2)git show 查看标签指令

查看标签详细信息,需要注意的时,该命令的打印并非按照创建时间进行排序,而是按照名称进行排序

bash 复制代码
git show <tagname>  # 查看标签的详细信息(特别是带注释的标签)

3)git push origin 推送标签指令

将本地标签推送到远程仓库

bash 复制代码
git push origin <tagname>  # 推送指定标签
git push origin --tags  # 推送全部标签到远程仓库
git push origin :<tagname>  # 删除远程仓库标签语法1
git push origin --delete <tagname/branch>  # 删除远程仓库标签语法2,但本地标签还会存在,该命令也可删除远程分支

4.2 本地标签操作

1)创建标签

git tag v1.0 创建标签,再用 git tag 查看标签创建情况。再次查看 .git 就可以看到 .git/refs/tags 出现了标签的信息,打印 v1.0 可以看到对象字符串,此时通过 git log --pretty=oneline --decorate 可以发现就是最新一次提交

那么怎么对之前的提交打标签呢?首先要先知道之前的提交的id,用 git log --pretty=oneline --abbrev-commit 查看之前的id,然后用 git tag -a <tagname> <commit id> -m "message" 对之前的进行打标签并进行描述

2)查看标签

那么怎么才能查看描述的标签信息呢?用 git show <tagname> 查看

3)删除标签

直接用 git tag -d <tagname> 删除即可

4.3 推送标签操作

1)推送标签

将本地标签推送到远程仓库,用 git push origin <tagname> 命令进行推送,如果想一次性全部推送,用 git push origin --tags 命令即可,此时远程仓库就可以看到了

2)删除远程标签

在删除本地标签的基础上,再次使用 git push origin :<tagname> 命令推送到远程仓库就可以完成删除了,此时远程仓库对应的标签就被删除了

仓库首页图片如下:

以上就是Git的使用技巧,更多知识可以参考Git参考文档:git参考文档https://git-scm.com/docs

相关推荐
霸道流氓气质5 小时前
CodeBuddy中使用 MCP 工具将 XMind 思维导图转换为 Markdown —— 实操流程汇总
git·myeclipse·xmind
OsDepK10 小时前
mimo code安装教程
git·电脑·ai编程
NexTunnel14 小时前
公司老项目还在 SVN,远程维护怎么做更稳?
git·svn·gitlab·远程工作·nextunnel
AOwhisky14 小时前
Linux(CentOS)系统管理入门笔记(第一期)——从 Multics 到主流发行版
linux·运维·笔记·centos·云计算
满天星83035771 天前
【Git】原理及使用(七) (多人协作 [下])
git
郡杰1 天前
Git基础与开发平台搭建
git·后端
钟智强1 天前
我警告了 329 天
git·php·wordpress·webshell
乐观的冷风1 天前
我们需要将文件添加到暂存区才能提交,而移除文件后是无法添加到暂存区的,那么怎么移除一个文件让GIT不再将其纳入版本控制呢?上图中GIT已经给出了说明:
git
tjl521314_212 天前
Git SSH Host Key Verification Failed 问题排查与解决
运维·git·ssh
鱼听禅2 天前
CentOS 源码模式配置SVNAdmin2管理SVN仓库
linux·svn·centos