当前位置: 首页 > news >正文

Git 远程操作

目录

理解分布式版本控制系统

远程仓库

克隆远程仓库

   HTTPS 协议克隆

SSH 协议克隆 

向远程仓库推送

拉取远程仓库 

忽略特殊文件  

给命令配置别名


理解分布式版本控制系统

        在前几篇文章中,我们讲述的所有的 git 的基本操作和分支管理都是建立在同一服务器也就是同一台主机上的操作,可是大家想一个问题,在真正办公的时候,我们能多个程序员使用同一台主机进行对应的编码操作吗,肯定不行,但是 git 本身又是一个分布式版本管理系统,也就是允许多个用户在不同的主机上对同一仓库进行版本控制操作。

        那么如何理解 git 工具是一个分布式版本控制系统呢?通过情景为大家一步步引入。

        

        如上图,张三和李四是某公司的后端程序员,张三在自己的主机上创建了仓库1,然后李四将张三创建的仓库1复制到了自己的主机上,至此之后,张三和李四之间可以互相的推送和拉取文件,这样及时张三中的文件不小心丢失了,在李四中仍然可以恢复丢失的文件,提高了仓库的安全性。但是,有时候,李四的主机可能关机了,那么张三可能无法向李四推送文件,如果张三的主机和李四的主机没有在一个局域网中,互相之间也是不能直接进行文件的拉取和推送的。 所以上述情景在公司日常的开发中肯定是不能采用这种版本控制策略的。

        一般多人编码环境下,真正的版本控制策略如下图。

        如上图,我们有一个中央服务器,这是我们真正创建仓库的一个服务器,中央服务器中的仓库我们称之为远程仓库,这个服务器是24小时不间断运行的,其它的服务器可以获取这个中央服务器中的仓库, 然后获取远程仓库中的信息,或者向远程仓库中推送信息。

        上述这种场景其实就是一个分布式版本控制系统,其实分布式系统的一个重要特点就是要有一个不间断运行的中央服务器,供其它的服务器进行访问。

远程仓库

        正如上述场景,我们在日常编码的过程中,往往需要一个核心服务器来提供一个远程仓库,但是实际上,搭建一个核心服务器并且创建一个仓库这其实是要付出很大的代价的。事实上我们并不需要这么做,而是使用 GitHub 这个网站,但是这个网站的服务器部署在国外,所以不是很稳定,往往需要使用一些第三方工具才能提供稳定的服务(可以使用 GitHub 的国内镜像网站 GitCode ,但是不建议使用)。这里强烈建议使用 gitee 这个网站,他可以提供与 GitHub 这个网站类似的功能。

       1.进入 gitee 主页面,创建远程仓库。

        2.配置仓库相关信息。 

        3.创建好仓库之后,进入仓库主页面。

        master 分支就是我们创建仓库是默认创建的一个主分支,当然可以新建其它分支。  

        README.md 这个文件就是一个介绍这个仓库功能的文件,可以自己根据仓库的功能自行配置。 

        点击管理,可以配置仓库的一些权限,比如添加仓库成员,不同的仓库成员有着不同权限,自己可以在对应的页面自行查看不同成员所对应的权限。

        在仓库主页面的上方导航栏中,有两个模块,IssuesPull Requests 模块。

        Issues 模块其实就是一个系统 BUG 提交的模块,可以说明系统哪里出现了 bug ,怎样出现的,然后可以设置该 BUG 的优先级,以及设置这个 BUG 在哪个分支中出现,这个 分支的负责人是谁,置顶和优先级。当其他用户使用这个仓库时,发现了仓库中的 BUG ,就可以在这个模块创建对应的文件和仓库管理员去进行沟通协商,让尽快修复 BUG

        Pull Requests 模块其实就是负责分支合并的模块,在该模块创建对应的文件之后,可以申请合并对应的两个模块,然后提交申请,由仓库管理员负责申请的审核,最终审核通过后,由仓库管理员进行分支合并。

克隆远程仓库

        克隆远程仓库的方法有四种。每一种方式对应了一种传输协议,SSH协议和HTTPS协议是Git最常使⽤的两种数据传输协议。SSH 协议使用了公钥加密和公钥登录机制,具有很高的安全性和实用性,所以不能直接克隆远程仓库。使用此协议需要将我们的本地服务区上的公钥放置于 Git 服务器,由 Git 服务器进行管理。使用 HTTPS 协议可以直接进行仓库的克隆。

        这里需要注意,克隆远程仓库时,不能将远程仓库克隆在本地仓库所在的目录下,除过本地仓库所在的目录,其它目录都可以进行克隆。 

   HTTPS 协议克隆

         使用 git clone 网址 指令进行远程仓库克隆。

        进入克隆好的仓库中,使用 git remote 指令可以查看远程仓库,使用 git remote -v 指令可以查看克隆到本地的仓库对远程仓库所具有的权限。 

        克隆的本地仓库具有对远程仓库的 fetch(拉取)push(推送) 权限,图示如下。

SSH 协议克隆 

        因为 SSH 协议使用了公钥登录和公钥加密的形式,所以我们首先要在 git 服务器上配置我们本地服务器的公钥。首先查看 git 服务器上是否含有本地服务器的公钥。

        点击头像,点击设置,在左侧导航栏我们点击 SSH 公钥,我们发现此时 git 服务器并没有配置公钥,所以我们此时就要配置公钥。

        先查看本地服务器的公钥,注意是公钥,私钥是绝密的,不能暴露给外部服务器。

    1. 进入本地服务器工作目录,找到 .SSH 目录,进入该目录,判断是否含有 id_rsaid_rsa.pub 这两个文件,一个对应私钥,一个对应公钥。 

        我们发现此时并没有 .SSH 目录,所以此时就需要我们自己创建私钥和公钥。

  2.使用 ssh-keygen -t rsa -C "邮箱" 的指令创建公钥和私钥。注意:这个邮箱也是在 SSH公钥对应的那一状态栏中的邮箱管理中的邮箱。

        创建的过程中一路回车即可。

        创建好私钥和公钥之后,进入 .SSH 目录中,将公钥中的内容一字不差的全复制到 git 服务器的 SSH 公钥中。

     3.进行 SSH 协议克隆。 

        在克隆的时候要注意输入 yes ,表示信任 git 服务器。  

向远程仓库推送

        如果我们已经将远程仓库克隆到本地成为了本地仓库,然后在工作区中创建修改了一些文件,如果此时我们想让远程仓库可以看到我们本地的创建和修改,我们应该怎样做呢?此时就需要使用相关的指令将本地仓库修改的内容 push 到远程仓库。

        push 到远程仓库,得经历以下步骤。

        1.  配置本地仓库的用户和邮箱。

        用户就是个人主页面,头像下方 @之后的字符串。

        还可以设置中个人资料中的名称。

        邮箱就是邮箱管理中对应的主邮箱。

        使用 git config -l 指令查看仓库的用户信息和邮箱信息。

        并没有对应的信息,所以我们必须手动配置。

        配置完成,开始进行 push。

     2.在本地仓库的工作区中创建对应的文件,然后 add commit 到暂存区和版本库。 

    3.使用 git push 远程仓库名 [本地分支名]:[远程分支名]指令向远程仓库推送,当本地分支和远程分支同名时,直接写上一个分支名即可。

        此时就已经完成了,本地仓库向远程仓库对应文件的推送。

        如上图,在远程仓库中我们也看到了本地仓库中创建的文件。 

拉取远程仓库 

        如果此时,远程仓库中新增或者修改了一个文件,本地仓库也想获取这个新增或者修改的文件,我们应该怎样做呢?我们可以使用对应的指令从远程仓库中进行文件的拉取。

   1.首先对远程的仓库中的文件进行修改,然后提交。 

        注意:一般情况下我们不建议直接对远程仓库中的文件进行修改,或者新建文件,要修改,可以让其它本地仓库推送新的文件或者修改的文件即可,这里在远程仓库修改文件,只是为了演示拉取功能。

   2.在本地仓库中,使用 git pull 远程仓库名 [远程分支名]:[本地分支名]进行远程文件的拉取,同样的,分支名称相同时可以省略一个文件名。 

        此时已经成功的拉取了远程修改的文件,同时 git pull 操作还将本地的文件和远端修改的文件进行了合并。 

忽略特殊文件  

         有些时候,在本地仓库中创建修改的文件,我们并不想在 push 文件的时候,将某些特殊文件上传至远程仓库,此时我们应该怎么做呢?

        我们可以在 .gitignore 文件中添加忽略提交的文件,这样就可以保证在 push 时忽略的文件不被 push 到远程仓库中。 

        如上图我们忽略 push 了对应后缀的文件。 

        我们发现,此时在工作区中创建的 1.a 和 2.b 文件并没有被 git 工具管理起来。

        将对应的文件进行 push。

        此时在远端,我们只看到了本地仓库中修改的 .gitignore 文件的改动,并没有发现本地仓库中新创建的 1.a 2.b 文件,因为这些后缀的文件被我们忽略推送了。         

        当然,如果要强行推送忽略推送的后缀文件,可以使用 git add -f [文件名] 指令进行强行的推送。 

给命令配置别名

        我们使用 git  status 查看当前本地仓库的状态,但是这个 status 单词太难写了,我们想用 st 这个缩写来代替,可以吗?可以,直接执行 git config --global alias.st status 指令即可。  

        此时已经成功配置。

        使用 git log --pretty=oneline 的指令打印提交的日志时,这个指令也太长了,我们进行别名配置。

        配置之后如下图。

        完成了对对应指令的重命名。

        如果我们要删除重命名,使用 git config --global --unset alias.[重命名] 即可。 

        以上便是 git  远程操作的所有相关内容。

        本期内容到此结束^_^

相关文章:

  • 二叉搜索树的最近祖先(递归遍历)
  • 《工业社会的诞生》章节
  • 信息系统监理师第二版教材模拟题第二组(含解析)
  • 【锂电池剩余寿命预测】RF随机森林锂电池剩余寿命预测(Pytorch完整源码和数据)
  • 移动 Trae 目录到 E 盘 - 解决 C 盘空间不足问题
  • 身份认证、访问控制技术、SSO单点登录技术、特权访问管理、身份治理与管理——数据安全守护者
  • 智能合约部署之全国职业院校技能大赛“区块链技术应用”赛项—“航班延误险案例”
  • 第四节:OpenCV 基础入门-第一个 OpenCV 程序:图像读取与显示
  • HTML5实战指南:语义化标签与表单表格高级应用
  • Spring Cloud Gateway路由+断言+过滤
  • 【毕设通关】——Word交叉引用
  • process terminated with status -1073741515
  • 前端面试宝典---性能优化
  • Javase 基础加强 —— 01 异常
  • Vue 路由(Vue Router)详解:轻松实现单页应用导航
  • llfc项目分布式服务笔记
  • VSCode搭建STM32开发调试环境
  • PostgreSQL 查看索引碎片的方法
  • Git 入门指南:下载与初步认识
  • 多模态大语言模型arxiv论文略读(五十九)
  • 外交部就习近平主席将应邀对俄罗斯进行国事访问并出席纪念苏联伟大卫国战争胜利80周年庆典答问
  • AI世界的年轻人|研究不止于实验室,更服务于遥远山区
  • 中央气象台:未来三天北方地区有大风沙尘,江南等地有强降水
  • 苏州一直升机坠落致1死4伤,事故调查正展开
  • 魔都眼|咖啡节上小孩儿忍不住尝了咖啡香,母亲乐了
  • 即日起,“应急使命·2025”演习公开征集新质救援能力