本节所讲内容均涉及到 远端版本库
。
版本库
的概念在《TortoiseGit 入门指南02:创建和克隆仓库》中提到过,它是工作目录下面的一个名为 .git
的隐藏目录,我们每一次提交、每一个分支都会保存在版本库中。这个版本库就在我们电脑上的某个文件夹内,所以也称为 本地版本库
。
远端版本库
通常是放在托管平台上的版本库,通过这种方式,可以备份代码、随时随地获取代码、与其他人员协同工作等。常见的托管平台有 Github
(国内访问速度受限)和 gitee
(国内托管平台,访问速度快)。
本地版本库
与 远端版本库
之间的交互主要涉及到 克隆
、拉取
、抓取
、推送
这几个操作。其中 克隆
已经在《TortoiseGit 入门指南02:创建和克隆仓库》中讲过,这里不再赘述,重点关注:
-
推送
(push):向远端版本库同步数据
-
拉取
(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_rsa
和 id_rsa.pub
,把 id_rsa.pub
文件中的内容复制下来。
1.3 设置远程仓库 SSH 秘钥
打开你的 Gitee 主页,点击账户设置 - 安全设置 - SSH 公钥,把刚才复制的 ssh 秘钥粘贴到公钥输入框中。
1.4 创建远端仓库
这里创建一个名为 demo
的测试仓库。新的仓库什么也没有,我们先复制这个仓库的 SHH 地址。
2 推送
使用推送(Push)将本地更改同步到远端版本库。
在仓库中右击鼠标 - TortoiseGit - Push...
打开推送对话框:
2.1 推送源(Ref)
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...
打开抓取对话框。
这里以拉取对话框为例(抓取对话框与之相似)。
读后有收获,资助博主养娃 - 千金难买知识,但可以买好多奶粉 (〃‘▽’〃)