【2023】Git版本控制-远程仓库详解

2023-08-04 19:10:25

Git远程仓库是Git版本控制系统的一个概念,它是一个存储Git代码的远程服务器。

你可以将本地Git仓库上传到远程仓库,以便与其他人协作开发或备份代码。

创建远程仓库


远程仓库可以使用第三方平台,如(github、gitlab、gitee)等,这里使用的仓库为gitee

地址为:https://gitee.com/

  • 需自行创建账号登录
  • 点击“+”号——点击新建仓库
    在这里插入图片描述
  • 填写仓库信息(除了仓库名其他都不重要)
    在这里插入图片描述

向远程仓库推送数据文件

  • 在本地添加远程仓库
  • 根据上一篇文章创建的本地仓库添加远程仓库,如果没有需要创建本地仓库
  • 地址为仓库地址,创建完成会看到
[root@jenkins cangku]# git remote add origin https://gitee.com/yyang2/test_01.git
  • 将本地仓库文件推送到远程仓库测试
[root@jenkins cangku]# git push -u origin master 
Username for 'https://gitee.com': yyang2
Password for 'https://yyang2@gitee.com': 
Counting objects: 20, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (20/20), 1.80 KiB | 0 bytes/s, done.
Total 20 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/yyang2/test_01.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

注意账号密码是你创建仓库时自定义的,一定要自己记住。

在这里插入图片描述
此时master分支上的两个文件已经推送到远程仓库了

从第二台主机本地拉取远程仓库数据

  • 创建公钥,存放至远程仓库,不然拉取会失败
[root@master-01 ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:MRxAZqBztC5ibEEGPkTPv1sI/BMLe1wG81TawTDsrxo root@master-01
The key's randomart image is:
+---[RSA 2048]----+
|+=  oo*++o       |
|= oo + o=o.      |
| +oooo.o+.       |
|. ++. =. o       |
|.+.+.o +S        |
|o. .* B  .       |
|   . E ..        |
|    . =.         |
|     o.          |
+----[SHA256]-----+
[root@master-01 ~]# cat ~/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPVwx3MG3oXcRQAx4K5VkPKXR0YiTdxJxGhtNGMWyPoN1j46zUjJtQl0tHsBMQW//NJ0+1+IzM3ReKe7xG8ZvDj9mmtiYu6SkYhPTkB9Qv5uzmu37pQ33MlB3MfthHMAvlu3m5LNZ5LKcz7fnFLBV9OyrgxuFPkgaavm4qIemy5JmthG5K2WXR5MfyNb4jzOTJl3Qxsk3lCDiAU2oXwCtWrx1LbySM8lQZ3hezGvkmauCnn+tFecalYeU/72CjRywX0A7FwHRBMspR4bLkCO+jvTZGB7UswbYC2SvVCAp1qG56KxraIszpmxnYah2Y0ONTo0AvOZENIZvI5IL65nm1 root@master-01
  • 复制公钥然后按下图步骤操作,确定后需要输入仓库密码确认

在这里插入图片描述

  • 在本地选择个合适的目录,克隆远程仓库时用
[root@master-01 ~]# mkdir /yu_cangku
[root@master-01 ~]# cd /yu_cangku/
[root@master-01 yu_cangku]# git clone git@gitee.com:yyang2/test_01.git
正克隆到 'test_01'...
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 20 (delta 0), reused 0 (delta 0), pack-reused 0
接收对象中: 100% (20/20), done.
[root@master-01 yu_cangku]# ls
test_01
[root@master-01 yu_cangku]# ls test_01/
file1.txt  hehe.py
  • 增加内容再推送至远程仓库
[root@master-01 yu_cangku]# cd test_01/
[root@master-01 test_01]# ls
file1.txt  hehe.py
[root@master-01 test_01]# cat file1.txt 
hello git
hello world
hello
hello hehehe
[root@master-01 test_01]# echo "hello yuancheng_cangku" >> file1.txt 
[root@master-01 test_01]# git add .
[root@master-01 test_01]# git commit -m "远程编辑 -v1"
[root@master-01 test_01]# git config --global user.email "yuancheng@example.com"
[root@master-01 test_01]# git config --global user.name "yuancheng"
[root@master-01 test_01]# git push origin master 
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 326 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To git@gitee.com:yyang2/test_01.git
   0a18968..c5ad2ac  master -> master
  • 在远程仓库刷新查看内容
    在这里插入图片描述
    发现了新增加的内容,说明过程是成功的。

第一台主机同步远程仓库数据

  • 当远程仓库数据优先于本地仓库,需要同步,如果已经克隆过仓库,可使用以下命令同步
[root@jenkins cangku]# git pull origin master
Username for 'https://gitee.com': yyang2
Password for 'https://yyang2@gitee.com': 
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://gitee.com/yyang2/test_01
 * branch            master     -> FETCH_HEAD
Updating 0a18968..c5ad2ac
Fast-forward
 file1.txt | 1 +
 1 file changed, 1 insertion(+)
[root@jenkins cangku]# cat file1.txt 
hello git
hello world
hello
hello hehehe
hello yuancheng_cangku
  • 第二台这时可以用以下命令同步数据
git pull origin master

tag标签


Git中的标签(tag)主要有以下作用:

1️⃣:标记软件版本:标签最常用的用途就是标记软件版本,类似于在代码的进化过程中某一天突然进行了一次正式的版本发布,或者修复了一个重要的漏洞,或者进行了某些功能的改进等,这些具有里程碑意义的事件发生时,我们可以为其打上一个标签,以方便后续的管理和追踪。
2️⃣:分支过度标签:当Git的分支过多的时候,此时便可以利用标签来对分支进行过度,这样可以减少分支的数量。
3️⃣:轻量级引用:标签其实就是一个指向某个commit的轻量级引用,打了标签后,就可以通过标签来引用这个提交。

  • tag的使用方法
[root@jenkins cangku]# git tag v1.0
[root@jenkins cangku]# git tag 
v1.0

此时只是将本地仓库做了标签,且为最新内容

  • 将tag标签同步到远程仓库
[root@jenkins cangku]# git push origin v1.0 
Username for 'https://gitee.com': yyang2
Password for 'https://yyang2@gitee.com': 
Total 0 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/yyang2/test_01.git
 * [new tag]         v1.0 -> v1.0
  • 再远程仓库查看
    在这里插入图片描述

  • 指定id号进行标签操作

git tag -a v1.0 [id] -m "v1.0"
  • 查看tag标签对应的id版本
[root@jenkins cangku]# git show v1.0
commit c5ad2ac2778758c0c6274427bc9fdaf172fd5779
Author: yuancheng <yuancheng@example.com>
Date:   Fri Aug 4 17:52:58 2023 +0800

    远程 -v1

diff --git a/file1.txt b/file1.txt
index 8a3fe2c..90a5b9e 100644
--- a/file1.txt
+++ b/file1.txt
@@ -2,3 +2,4 @@ hello git
 hello world
 hello
 hello hehehe
+hello yuancheng_cangku

git忽略文件


gitignore是一个特殊的文件,用于告诉Git哪些文件或目录不应该被纳入版本控制。在Git仓库中,有些文件或目录可能包含敏感信息、临时文件或者不需要被跟踪的文件,这些文件不应该被包含在Git仓库中。通过使用.gitignore文件,开发者可以告诉Git哪些文件需要被忽略,从而避免将这些文件包含在版本控制中,提高Git仓库的可维护性和安全性。

gitignore文件的主要作用有以下几个方面:

  • 忽略敏感信息和不必要的文件:在一个Git仓库中,有些文件可能包含敏感信息,例如API密钥、密码等。这些信息不应该被包含在版本控制中,因为一旦泄露,可能会对项目或者用户造成严重的损失。通过使用.gitignore文件,开发者可以将这些敏感信息所在的文件或目录添加到忽略列表,从而避免将其包含在Git仓库中。
  • 忽略临时文件和目录:有些文件和目录是临时性的,不需要被版本控制管理。例如,编译生成的中间文件、日志文件、配置文件等。通过添加到.gitignore文件,可以避免将这些文件包含在Git仓库中,提高仓库的整洁性和可维护性。
  • 统一管理项目文件:有时候,一个项目可能有多个人协作开发,每个人的开发环境和工作习惯都不同。为了避免不必要的冲突和错误,可以使用.gitignore文件统一管理项目文件,确保每个人都使用相同的配置和约定。

示例:

vim .gitignore

# 忽略所有以“.log”结尾的文件  
*.log  
  
# 忽略指定目录下的所有文件和子目录  
node_modules/  
  
# 忽略指定文件或目录  
my_secret_file.txt  
logs/  
  
# 忽略所有以“.swp”结尾的文件  
*.swp  
  
# 忽略指定扩展名的文件  
*.docx  
  
# 忽略指定文件或目录,以及所有以“.tmp”结尾的文件  
temp/  
*.tmp
[root@master-01 test_01]# git add .
[root@master-01 test_01]# git commit -m "gitignore"
[root@master-01 test_01]# git push origin master 
更多推荐

【Rust 基础篇】Rust中的不安全函数:解锁系统级编程的黑盒之门

导言Rust是一种以安全性和高效性著称的系统级编程语言。它的设计哲学是在不损失性能的前提下,保障代码的内存安全和线程安全。为了实现这一目标,Rust引入了"借用检查器"和"所有权系统"等特性,有效地避免了空指针、数据竞争等常见的安全问题。然而,有些场景下,为了完成某些高级操作或者与底层交互,Rust需要突破其安全边界。

工业交换机为什么有必要进行老化测试?

我们可以根据客户的要求来制定老化测试的检测标准,如果没有特别的要求,我们将依照国家相应的标准进行老化测试检验。老化测试的主要目的是通过模拟产品在现实使用过程中所面临的各种恶劣条件,对产品进行高强度的测试。同时,根据产品的使用要求,合理预测其使用寿命。老化测试是为了确保产品达到满意的合格率,几乎所有产品在出厂前都必须经过

Golang使用Channel

1.使用协程packagemain//使用协程import("fmt""strconv""time")functest(){fori:=1;i<=10;i++{fmt.Println("test()helloworld"+strconv.Itoa(i))time.Sleep(time.Second)}}//主线程和te

开源与区块链:去中心化的未来

🌷🍁博主猫头虎带您GotoNewWorld.✨🍁🦄博客首页——猫头虎的博客🎐🐳《面试题大全专栏》文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大

ddns有什么作用?无公网IP怎么将内网IP端口映射外网访问

DDNS是什么?DDNS英文全称DynamicDomainNameServer,中文含义是指动态域名服务。很多普通路由器或者智能路由器设置中,都可以找到DDNS(动态DNS)功能。上面的解释可能过于专业,其实DDNS通俗点说,它是一种将用户的动态IP地址映射到一个固定的域名解析服务上的功能,因为现在目前大多数路由器拨号

如何将内网ip映射到外网?快解析内网穿透

关于内网ip映射到外网的问题,就是网络地址转换,私网借公网。要实现这个,看起来说得不错,实际上是有前提条件的。要实现内网ip映射到外网,首先要有一个固定的公网IP,可以从运营商那里得到。当你得到公网IP后,你的私网有可能有多台主机,都要挂到公网上,这时候会用到DMZ。比如,你有一个公网IP,也可能是通过快解析等得到,你

R语言绘制PCA双标图、碎石图、变量载荷图和变量贡献图

1、原论文数据双标图代码:setwd("D:/Desktop/0000/R")#更改路径#导入数据df<-read.table("Inputdata.csv",header=T,sep=",")#-----------------------------------#所需的包:packages<-c("ggplot2"

网络监控应用程序

在过去的几十年中,网络监控应用稳步发展,以适应不断变化的市场需求和期望。多年来,停机成本飙升,客户对停机的耐心比以往任何时候都低,不仅仅是正常运行时间,正常运行时间的质量也变得很重要。另一个发展是网络的复杂性日益增加。现代网络监控应用程序必须优化云原生、基于云的和整合环境的性能。对现代网络监控软件的期望网络监控工具有望

数据结构和算法(7):图应用

双连通分量:判定准则考查无向图G。若删除顶点v后G所包含的连通域增多,则v称作切割节点或关节点。不含任何关节点的图称作双连通图。任一无向图都可视作由若干个极大的双连通子图组合而成,这样的每一子图都称作原图的一个双连通域。如何才能找出图中的关节点呢?1.蛮力算法首先,通过BFS或DFS搜索统计出图G所含连通域的数目;然后

C++基础-类和对象(上)

文章目录前言一、面向对象和面向过程1.面向对象(OOP)概述2.面向对象和面向过程的区别二、类的引入和定义1.类的引入2.类的基本思想和定义1.类的思想2.封装概念1.概念:2.作用:1.类的定义三、类的特性1.访问限定符及作用域1.类的访问限定符2.类的作用域2.类的实例化及大小1.类的实例化2.类的大小3.this

javabasic

JAVABasic一、计算机基础1.计算机组成2.进制的概念2.1二进制的存储计算机不管是内存还是硬盘,都是以二进制的形式存储。如同一张巨大的表格,里面都是由0和1组成。二进制:逢2进1基数为2,数值部分用不同的数字,0、1来表示。(逢2进1便是没有2的概念,遇到2就像前面进一位)比如2,看到2向前进1,2用二进制表示

热文推荐