数据治理 | 科研团队协同工作新神器!Git远程仓库的使用
目录
一、Git 的分布式特性
1. “老的”集中式版本管理
2. 分布式版本管理
二、搭建和使用远程仓库服务器
第一步:注册 GitHub
第二步:创建 SSH key
第三步:创建远程仓库
三、将文档提交到远程仓库
四、总结
本文共4653个字,阅读大约需要15分钟,欢迎指正!
相信大家经过一段时间的学习已经熟练掌握了以上命令。
创建一个项目文件夹(空文件夹),放入需要被Git管理的文档 在项目文件夹中,用 git init
创建版本库,会生成 .git 隐藏文件夹,其中有各种配置文件在项目文件夹中,用 git config
命令设置用户信息和添加防中文乱码的配置参数使用 git add
. 和git commit -m "注释"
将文档提交到版本库使用 git reflog
查看 提交ID(前7位)使用 git reset --hard 提交ID(前7位)
将文档切换到指定的版本
到目前为止,我们已经基本掌握了如何在本地个人电脑上使用Git进行版本控制,即:创建Git仓库,并对其进行管理,并且可以回退到任意一个提交点。如下图所示:但到目前为止我们学习的只是 Git 庞大功能中的一小部分,还有很多功能需要拓展学习。在给出本期的学习内容之前,大家不妨考虑以下问题如何解决:💡关于Git的更多知识,请看:
如果个人电脑损毁或者硬盘坏了,那么存放在本地电脑上的版本库中的所有历史版本都可能丢失,如何找回? 团队需要协作。目前的版本库在个人本地电脑上,难道要通过U盘拷贝给其他合作者吗?太麻烦了!
Part1Git 的分布式特性
1“老的”集中式版本管理
要了解Git的分布式特性,首先要对集中式版本管理有所了解。在集中式的版本控制系统中,所有的版本库是放在中央服务器中的,也就是说我们每一次的修改上传都是保存在中央服务器中的。如下图所示:中央服务器就是个大仓库,大家把产品都堆里面,每一次需要改进和完善的时候,需要去仓库里面把文件给提出来,然后再操作。集中式的版本控制系统有三大特点,即同步、追溯、以及文档备份等三大特点。它具备版本控制的重要功能,流行了很长一段时间。但是,集中式版本控制系统有一些的缺点:首先,团队成员想要拉取文档或提交到仓库,或是对文档库做一些其他的操作,都必须在能够连网的环境下进行。其次,由于每个团队成员的修改,时常是反复持续进行,在修改的过程中,总会遇到未能稳定、完备到足以提供给其他成员使用的程度,若是在此时提交到仓库,便有可能让仓库的代码处于不稳定、不成熟的状态。💡补充知识:
从集中式版本控制系统的设计观点来看,它主要是维持团队成员之间保持同步的状态。若是根据保持同步的手段再细分,又能衍生出两种模式:一种是锁定模式,另一种是合并模式[1]。
在锁定模式下,当团队成员想要修改某文档、签出该文档后,该文档便会进入锁定状态,其他成员便无法加以修改,直到签出者将该文档签回为止。对于维持同步来说,这当然是一个十分保险的作法,因为永远不会有两个或以上的成员同时修改同一个文档。只是这种方法造成了团队成员对于文档修改的互斥效应,大大降低了协同办公效率。
在合并模式下,允许多位团队成员同时针对同一文档进行修改,当他们分别将文档提交仓库时,若发生冲突的情况,便会自动进行合并,而若自动合并失败,再要求人工合并。不过即使如此,最终目的还是要维持多个成员间的同步。毕竟,版本控制的结果在集中式文档库中是唯一的,也是每位团队成员都需与此结果保持一致的。
2分布式版本管理
由于集中式版本控制系统有一些致命的缺点,分布式版本控制系统应运而生,甚至慢慢成为主流。分布式版本控制系统的重点在于分布,即每台计算机上都有一个完整的版本库。如下图所示:在实际工作中,上图中 Computer A 和 Computer B 之间的连接线往往不存在,它们都只和服务器( Server Computer) 进行连接。这里的Server Computer 就是团队中的远程仓库服务器。每个用户都可以从远程仓库服务器中拉取完整的文档,或者把自己的修改推送到远程仓库,通常情况下,Git 会对提交进行合并(当出现冲突时,需要人为介入,解决冲突问题)。这些具体的细节我们在后面的推文中学习。由于每个用户都有完整的版本库,就可以在本地进行工作,所有对版本控制系统的操作,都可以直接在本机端的版本库中进行,包括提交、分支、合并、回退等。同时,用户不需要将自己的修改持续送至集中的版本库上,造成其他用户必须套用这些修改,引起可能的不稳定情况。因为分散式版本控制系统本质的关系,使得此类系统更重视对分支(branch)的支持,它们通常有较好的分支及合并的能力。git 非常提倡我们利用分支来辅助日常工作流程。我们将在后期的推文中,学习 Git 的分支管理。Part2搭建和使用远程仓库服务器
我们可以自己搭建一个远程仓库服务器,也可以使用互联网上的Git仓库托管服务(例如GitHubhttps://github.com 、Gitee https://gitee.com
)等。对广大的社科读者而言,自行搭建远程仓库服务器并进行数据安全备份,成本过高。若无数据敏感性问题,我们更推荐选择互联网大厂提供的Git仓库托管服务 。目前的学习阶段,我们使用 GitHub(💡小贴士:
据笔者了解,在一定的限额内,GitHub 是免费的。
具体额度见:
https://docs.github.com/en/enterprise-cloud@latest/get-started/learning-about-github/githubs-products
。
https://github.com
)创建远程仓库进行团队协同工作。第一步注册 GitHub
第一步:访问 GitHub 注册并登录,这一步非常简单,我们跳过。第二步创建 SSH key
版本库需要设置用户认证,保证数据安全。我们可以用账号密码登录,也可以使用 SSH key 验证登录。我们这里选择 SSH key 验证登录,因为只需配置一次,就可以免密访问一个账户下的所有版本库。创建 SSH key步骤如下:首先,在用户主目录下( 例如:C:\Users\chen 或者 C:\Users\Administrator ),看看有没有 .ssh 目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,右击运行 Git Bash Here,创建SSH Key:⚡注意:
Git 默认读取用户主目录下, .ssh 目录中的密钥文件。因此,创建密钥文件时,我们设置了对应的目录,读者请自行修改为自己的用户主目录。
# 创建用户保存密钥文件的文件夹
# 注意:git的命令行,对 Windows 的盘符做了处理
# /d/ssh 等价于 D:\ssh
# /c/user/ 等价于 C:\users
# 这里需要填写自己的用户主目录,不要照抄
mkdir /c/users/自己的用户名/.ssh
# 生成密钥
ssh-keygen -t rsa -P '' -f /c/users/自己的用户名/.ssh/id_rsa -C 'test'
# 命令说明:
# -t rsa 表示指定要创建的密钥类型
# -P '' 表示不添加额外密码
# -C 'test' 表示注释
# -f /d/ssh/id_rsa 表示密钥文件保存位置及其名称
成功后的效果如下图所示:id_rsa 文件,是私钥,相当于 "钥匙", 请保存妥当。 id_rsa.pub 文件,是公钥,相当于 "门锁"
第三步创建远程仓库
第一步,点击头像右边的 "+" ,然后点击 New repository 。第二步,安装如图所示说明,创建仓库。出现如下画面则创建成功。Part3将文档提交到远程仓库
将本地版本库中的文件提交到远程仓库需要做如下配置:首先,在自己的本地的版本库中,运行 Git Bash Here,输入如下内容:# 这两步不是必须的
git add .
git commit -m "提交到远程仓库"
# 这个链接是自己的仓库链接 !
git remote add origin git@github.com:hangzhou-qiyan/test.git
然后,我们就可以提交文档到远程仓库啦。输入以下命令:# 第一次,使用如下命令
git push --set-upstream origin master
# 后续使用如下命令
git push
# 注意,git 默认读取 用户主目录下,.ssh 目录中的密钥文件
# 前面的创建密钥过程中,目录的设置是有讲究的 !
效果如下图所示:登录到GitHub的仓库中,发现数据已经提交。当本地的数据丢失,就可以从远程的服务器中找回数据啦。至此为止,我们已经可以解决前文提出的第一个问题:数据安全性问题。至于,第二个协同工作问题,我们将在下一篇推文中介绍。Part4总结
随着学习地深入,我们掌握了更多版本控制相关知识,我们的文档管理工作逐渐从个人文档管理迈向团队文档管理。本期的推文,版本控制和Git相关概念较多,希望大家好好理解。然后,注册一个远程仓库服务,敲一敲上面的命令。下期推文,我们将具体介绍多人团队如何使用远程仓库进行协同工作,敬请期待!参考资料
[1]《從集中版本控制到分散式版本控制》https://www.ithome.com.tw/node/77088
[2]https://www.liaoxuefeng.com/wiki/896043488029600
[3]https://git-scm.com/book/en/v2
我们将在数据治理板块中推出一系列原创推文,帮助读者搭建一个完整的社科研究数据治理软硬件体系。该板块将涉及以下几个模块(点击标题即可跳转至相应合集):
星标⭐我们不迷路!想要文章及时到,文末“在看”少不了!
点击搜索你感兴趣的内容吧
往期推荐
数据Seminar
这里是大数据、分析技术与学术研究的三叉路口
文 | 大杰
欢迎扫描👇二维码添加关注