TortoiseGit 入门指南05:推送和拉取

2023-10-26

本节所讲内容均涉及到 远端版本库

版本库 的概念在《TortoiseGit 入门指南02:创建和克隆仓库》中提到过,它是工作目录下面的一个名为 .git 的隐藏目录,我们每一次提交、每一个分支都会保存在版本库中。这个版本库就在我们电脑上的某个文件夹内,所以也称为 本地版本库

远端版本库 通常是放在托管平台上的版本库,通过这种方式,可以备份代码、随时随地获取代码、与其他人员协同工作等。常见的托管平台有 Github(国内访问速度受限)和 gitee (国内托管平台,访问速度快)。

本地版本库远端版本库 之间的交互主要涉及到 克隆拉取抓取推送 这几个操作。其中 克隆 已经在《TortoiseGit 入门指南02:创建和克隆仓库》中讲过,这里不再赘述,重点关注:

  1. 推送(push):向远端版本库同步数据
  2. 拉取(pull)和 抓取(fetch):从远端版本库同步数据

它们的关系用一张图表示为:
在这里插入图片描述
图中出现的概念,如工作区版本库提交 等,在之前的文章中均有提及,这些基本概念需要读者理解,这是用好 Git 的基础。

1 云托管平台设置

Gitee 托管平台为例。

1.1 注册 Gitee

在官网注册,点击这里

1.2 创建SSH秘钥(key)

在任意位置单击鼠标右键,在弹出的右键菜单中单击 Git Bash Here ,打开 Git 命令行界面。
在这里插入图片描述

在 git 命令行界面中输入:

ssh-keygen -t rsa -C "email" 

email 是你设置 Git 时用到的电子邮箱,邮箱要在双引号内。

此时,C:\Users\用户名.ssh目录下会生成两个文件:id_rsaid_rsa.pub,把 id_rsa.pub 文件中的内容复制下来。

1.3 设置远程仓库 SSH 秘钥

打开你的 Gitee 主页,点击账户设置 - 安全设置 - SSH 公钥,把刚才复制的 ssh 秘钥粘贴到公钥输入框中。

1.4 创建远端仓库

在这里插入图片描述
这里创建一个名为 demo 的测试仓库。新的仓库什么也没有,我们先复制这个仓库的 SHH 地址。
在这里插入图片描述

2 推送

使用推送(Push)将本地更改同步到远端版本库。

在仓库中右击鼠标 - TortoiseGit - Push... 打开推送对话框:

在这里插入图片描述

2.1 推送源(Ref)

  • Local:源分支,该分支将被推送到远端版本库。

  • Remote:远端版本库分支名,远端版本库可能有多个分支,比如master分支用于稳定版本,平时开发在develop分支上进行,当推送的时候,需要指定推送到哪个分支上。

    注:如果不填写远端版本库分支名,则推送到远程仓库的默认分支,将哪个分支设置为默认分支可以在远端版本库修改。

    这就意味着,如果用master分支存储稳定版本,则不要将它设置为默认分支,以免将开发版本错误的推送到master分支上。

2.2 推送目的地(Destination)

  • Remote:选择一个已配置的远端版本库。如果还没有配置过,点击Manage,在弹出的设置页面中配置一个远端版本库,如下图所示。在 URL 处填写刚刚复制的远端版本库 SSH 地址,点击“确定”按钮,完成与远端版本库的关联。
    在这里插入图片描述
  • Arbitrary URL:也可以使用远端版本库的 URL

远端版本库应该是一个裸仓库。

2.3 选项(Options)

  • Force: May discard known changes:强制推送,可能丢失已知更改,会使用 --force-with-lease 选项,可以防止丢失远程仓库其他人的未知更改。需小心使用,一旦使用此选项,表明本地仓库与远程仓库出现了冲突,建议先拉取代码,在本地解决冲突后再进行推送。

  • Force: May discard unknown changes:强制推送,可能丢失未知更改,会使用 --force 选项,可能导致远程仓库其他人的更改丢失,需要慎重使用。一旦使用此选项,表明本地仓库与远程仓库出现了冲突,建议先拉取代码,在本地解决冲突后再进行推送。

  • Include Tags:将本地标签推送到远端版本库。默认情况下,推送内容时不包含标签的,如果要将标签推送到远端版本库,需要手动勾选此选项。

  • Set upstream/track remote branch:跟踪远程分支。

    跟踪远程分支意味着将本地分支与远程分支关联起来。比如远程有三个分支 master、develop 和 feature,其中 develop 分支作为默认分支,但有一段时间我们需要在 feature 分支上开发一个新功能,在这期间所有的更改都要推送到 feature 分支,解决方法是每次推送时,都在推送对话框的 Remote 处手动填写 feature。这样很不方便,我们可以在推送到 feature 分支时,勾选 Set upstream/track remote branch 选项,这样就将本地分支与远程 feature 分支之间建立了关联,下次再推送的时候,TortoiseGit 会自动帮我们填写 feature,就不必担心不小心将更改推送到默认的 develop 分支上去。

3 拉取和抓取

拉取(pull)和抓取(fetch)都是从远端版本库中获取更改的方法,区别在于:抓取只将数据下载到你的本地版本库,它不会自动合并或修改你当前的工作区;拉取不仅将数据下载到你的本地版本库,还会自动合并到当前版本库并更新当前工作区。

在仓库中右击鼠标 - TortoiseGit - Pull... 打开拉取对话框;

在仓库中右击鼠标 - TortoiseGit - Fetch... 打开抓取对话框。

这里以拉取对话框为例(抓取对话框与之相似)。

在这里插入图片描述

  • Tags复选框:有三种状态,选中表示下载所有Tag和分支、未选中表示不下载Tag、部分选中表示使用默认设置。

  • Prune复选框:有三种状态,选中表示删除远程上不再存在的远程跟踪分支、未选中表示不删除、部分选中表示使用默认设置。

    Tags复选框Prune复选框 的默认设置可以在 TortoiseGit - Settings - Git - Remote 中设置:
    在这里插入图片描述









读后有收获,资助博主养娃 - 千金难买知识,但可以买好多奶粉 (〃‘▽’〃)
千金难买知识,但可以买好多奶粉

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TortoiseGit 入门指南05:推送和拉取 的相关文章

随机推荐

  • 钉钉环境下H5开发微应用遇到的问题和BUG(持续更新)

    项目类型 CRM 项目描述 微应用是钉钉为连接企业办公打造的移动入口 通过微应用你可以将企业的业务审批 内部系统 生成 协作 管理 上下游沟通连接到钉钉 该项目是在钉钉的基础上开发一个供本公司销售使用的客户管理系统 包含了客户 项目 订单
  • mysql实现行转列作为临时表、以及字符分割行转列

    1 需求 实现两个日期段转换为具体的日期天数 2022 10 23至2022 10 26得到一张2022 10 23 2022 10 24 2022 10 25 2022 10 26的临时表 SELECT DATE FORMAT DATE
  • vivado关联第三方编辑器

    前言 可忽略不看 绑定vivado的第三方编辑器的时候 本人曾经看过一些教程 但是对于路径的设置看的一头雾水 所以就把路径构成记录了下来 希望对你有帮助 需要关键在于step6中的路径格式 路径的格式简单分为三个部分 需要绑定的编辑器的路径
  • java中匿名内部类的匿名构造函数是怎么用的

    java中匿名内部类的匿名构造函数是怎么用的 下面的例子说明匿名内部类的匿名构造函数的用法 例2 7 2 0 interface FigureMark to win void whoAmI public class Test public
  • 刀片服务器切换显示,刀片机服务器切换

    刀片机服务器切换 内容精选 换一换 当保护组的生产站点发生故障时 将保护组的生产站点切到当前的容灾站点 即另一端AZ 启用当前容灾站点的云硬盘以及云服务器等资源 故障切换完成之后 保护组的当前生产站点变成故障切换发生之前的容灾站点 且生产站
  • 大数据开源框架之HBase编程实践

    HBase的安装部署请看 30条消息 大数据开源框架环境搭建 五 Hbase完全分布式集群的安装部署 木子一个Lee的博客 CSDN博客 目录 任务1 用HBase提供的HBase Shell命令实现以下指定功能 1 列出HBase所有的表
  • 我的创作纪念日

    机缘 我热爱编程 热爱解决问题 也享受在解决问题的过程中遇到的挑战 在大学的学习过程中 我发现将学习过程和解决问题的过程记录下来能够帮助我更深入地理解知识和技术 同时也为未来遇到类似问题提供了参考 我开始将我的学习笔记分享给同学们 收到了非
  • 二维矩形装箱问题

    装箱问题 是个NP问题 至于装箱问题到底是个什么东西 可以看看百度文档http wenku baidu com view f6e7f80590c69ec3d5bb755f html 其实我没看 研究二维矩形装箱问题 是因为需要将小图拼成大图
  • JAVA使用socket outputstream中碰到的问题

    今天在使用java的socket写网络通信 作为服务端向对端传送数据 建立连接后 首先发4个字节的内容 存放文件大小 然后再发送文件正文内容 代码是这样写的 Socket client new Socket 192 168 60 1 999
  • 谈谈Elasticsearch 和 传统关系型数据库的对比

    本帖最后由 mtsbv110 于 2016 3 22 15 03 编辑 1 在Elasticsearch中 文档归属于一种 类型 type 而这些类型存在于 索引 index 中 类比传统关系型数据库 Relational DB gt Da
  • PaddleOCR系列-训练模型并部署android手机

    PaddleOCR系列 训练模型并部署android手机 TOC PaddleOCR系列 训练模型并部署android手机 1 训练paddleocr模型 2 ocr模型部署安卓手机 2 1 AndroidStudio 2021 2 1或以
  • RecyclerView详解

    RecyclerView 简称 RV 是作为 ListView 和 GridView 的加强版出现的 目的是在有限的屏幕之上展示大量的内容 因此 RecyclerView 的复用机制的实现是它的一个核心部分 RV 常规使用方式如下 解释说明
  • ARM开发板挂接NFS网络文件系统

    1 交叉线连开发板和PC 2 LINUX IP PC IP和开发板IP属同一网段 LINUX IP 192 168 1 20 PC IP 192 168 1 30 做中转作用 开发板IP 192 168 1 10 3 ubuntu默认是没有
  • mysql 建表语句 stored as_Druid 解析Hive建表语句解析报错

    Druid 版本 com alibaba druid spring boot starter 1 2 3 Hive 建表SQL create table ads data sale detail one23 like ads data sa
  • HashMap的底层实现原理

    HashMap的底层实现原理 一 HashMap的底层实现原理 HashMap 在 JDK1 8 之前的实现方式 数组 链表 JDK1 8之后的实现方式 数组 链表 红黑树 原理 当你 new 一个 HashMap 的时候 它底层并没有创建
  • 有哪些副业适合教师?有哪些是教师禁止的副业?

    有哪些副业适合教师 有哪些是教师禁止的副业 老师做副业选择挺多的 但是很多人一上来就说什么辅导班 做点小生意之类的 大家怕是还不知道对于在编教师有些兼职副业是做不了的 有些事没有禁止可以做的 还有一些是鼓励做的 那些副业是老师坚决不能碰的
  • Java初学之标识符

    目录 一 什么是标识符 二 标识符的命名规则 三 标识符的命名规范 一 什么是标识符 标识符 identifier 是指用来标识某个实体的一个符号 在不同的应用环境下有不同的含义 在java源程序中 凡是程序员有权利自己命名的单词都是标识符
  • 关于数据导入,教你几招

    前言 我们知道 数据库是存放数据的仓库 日常我们使用数据库也是为了存储数据 和数据库打交道总免不了要进行数据导入工作 工作中也可能遇到各种不同的数据导入需求 本篇文章主要分享下数据导入相关的小技巧 希望你能学到几招 1 弄清需求是关键 在进
  • AIX 常用命令

    查看所有vg对应的lv lsvg o lsvg i l 查看一个lv的详细细心 lv对应的日志文件 getlvcb AT fslv01 VGDA与ODM的同步 synclvodm v vght vg 名字 umount被占用删除 fuser
  • TortoiseGit 入门指南05:推送和拉取

    本节所讲内容均涉及到 远端版本库 版本库 的概念在 TortoiseGit 入门指南02 创建和克隆仓库 中提到过 它是工作目录下面的一个名为 git 的隐藏目录 我们每一次提交 每一个分支都会保存在版本库中 这个版本库就在我们电脑上的某个