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

版本库 的概念在《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 中设置:
    在这里插入图片描述









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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐