【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

相关推荐
阿梦Anmory2 小时前
git本地仓库链接远程仓库
git
黄同学real2 小时前
如何下载和使用Git:初学者指南
git
364.99°4 小时前
windows:curl: (60) schannel: SEC_E_UNTRUSTED_ROOT (0x80090325)
gitee·bash
邵奈一5 小时前
git报错:error: RPC failed; curl 16 Error in the HTTP2 framing layer
git·网络协议·rpc
北冥有鱼被烹6 小时前
【微知】Centos如何迁移到Anolis系统的失败记录?(yum -y install centos2anolis、centos2anolis.py)
linux·服务器·centos
云纳星辰怀自在7 小时前
Git系列之git tag和Release&Milestone
git
繁华似锦respect9 小时前
linux-git
git
残轩10 小时前
用Gitee+Typora轻松打造自己专属的私有云笔记
git·markdown
老大白菜13 小时前
在CentOS系统上安装Conda的详细指南
linux·centos·conda