查看原文
其他

数据治理 | 团队必备!使用Git进行多人协同工作

快点关注→ 数据Seminar 2023-02-21

目录

一、场景模拟

二、工作流程

(一)课题准备阶段
二)王教授设置远程仓库
三)小赵克隆远程仓库并开始材料收集工作
四)小李克隆远程仓库并开展工作
(五王教授管理课题进度

三、本文总结

本文共4328个字,阅读大约需要11分钟,欢迎指正!

关于Git的往期推文:建议大家按顺序阅读!
  1. 数据治理 | 版本控制神器:GIT—介绍和安装
  2. 数据治理 | 版本控制神器:GIT—个人文档管理
  3. 数据治理 | 一文看懂GIT的基本原理!
  4. 数据治理 | 科研团队协同工作新神器!Git远程仓库的使用



上期推文,我们学习了 Git 远程仓库的搭建以及使用远程仓库管理文档(点此查看上期文章:数据治理 | 科研团队协同工作新神器!Git远程仓库的使用),我们回顾一下基本操作流程:

  1. 登录 Github,创建账号和远程仓库。
  2. 使用 ssh-keygen 命令创建密钥对,并将公钥上传至远程仓库
  3. 使用 git remote add 命令,把本地代码库和远程仓库“绑定”
  4. 使用 git push 将本地代码库同步到远程仓库

本期推文主要介绍如何使用远程仓库进行协同工作,我们会模拟一个团队协作的场景,帮助大家掌握 Git 相关知识。

Part1场景模拟

我们模拟如下协同工作场景:王教授辅导两位学生小赵和小李完成某大学生创新课题项目。

团队工作安排如下:

  • 王教授负责课题的进度管理和论文指导
  • 小赵负责材料收集和会议记录
  • 小李负责计量模型和论文写作

课题推进工作中,王教授部署了Git 仓库进行项目的文档管理,有效提高了团队的工作效率,辅导学生顺利完成了本次课题。

Part2工作流程

(一)课题准备阶段

正式开始用Git进行协同工作前,有以下几个事项必须提前准备完成:

  1. 团队成员需要先注册 Github 账号(读者可以选择合适的平台,本文以 Github 为例进行讲解)
  2. 每个团队成员设置各自的SSH密钥,并上传至各自的 Github 账号中。可参考上期推文数据治理 | 科研团队协同工作新神器!Git远程仓库的使用, 本期推文也补充了 mac/linux 用户的操作说明
  • mac / linux 用户执行如下操作:
# 下面的命令中,wang 表示用户名称,并且已经存在于 mac/linux 系统中。
# linux 系统中,用户默认目录为 /home/wang
ssh-keygen -t ED25519 -P "" -C "wang"  -f /Users/wang/.ssh/wang

# 在 /Users/wang/.ssh 目录下会出现下面两个文件
# wang    --> 私钥文件
# wang.pub  --> 公钥文件

# 对 mac 用户,需要额外添加如下命令,让私钥添加到缓存中:
# zsh 表示mac用户使用的shell版本,如果使用 bash Shell 则替换成 bash
ssh-agent zsh
ssh-add /Users/wang/.ssh/wang
  • windows 用户运行 “Git Bash Here”,然后执行如下操作:
# 下面的命令中,xiaozhao 表示windows系统的用户名称, 读者需要替换成自己的windows用户名
# mkdir -p 用于生成 .ssh 目录
mkdir -p /c/Users/xiaozhao/.ssh

# 下面的命令中,xiaozhao 表示用户名称, 读者需要替换成自己的用户名。
ssh-keygen -t ED25519 -C "xiaozhao" -P "" -f  /c/Users/xiaozhao/.ssh/xiaozhao

# 在 /c/Users/xiaozhao/.ssh/ 目录下会出现下面两个文件
# xiaozhao    --> 私钥文件
# xiaozhao.pub  --> 公钥文件

(二)王教授设置远程仓库

王教授作为管理者,需要先在 Github 平台上创建仓库,并将团队成员的Github账号添加到该仓库中。操作步骤如下:

  1. 在 Github 上创建远程仓库(见图1)
  2. 在仓库中添加课题团队成员的账号(见图2)
  3. 将仓库的地址告知课题组成员(见图3)
图1  创建远程仓库
图2  在仓库中添加课题团队成员
图3  告知成员仓库的地址

(三)小赵克隆远程仓库并开始材料收集工作

小赵收到了王教授的邮件,邮件中含有远程仓库相关信息,小赵用如下命令,克隆了远程仓库。

注意,下方代码,windows用户需要启动 Git Bash Here 运行,mac / linux 用户需要启动终端,后文不再赘述。

# 进入指定的目录
cd /Users/xiaozhao

# 克隆远程仓库到指定目录
git clone git@github.com:TestMailDrWang/Project.git
# clone 成功后出现一个文件夹:/Users/xiaozhao/Project

# 查看仓库的内容
ls /Users/xiaozhao/Project
# 现在只有一个 README.md 文件

# 查看文件内容
cd /Users/xiaozhao/Project
cat README.md

### RADME.md 中是王教授创建项目时填写的内容。
# Project
# wang,lee,zhao

我们也可以在系统中查看文件,如下图所示:



💡 需要注意,上期推文(数据治理 | 科研团队协同工作新神器!Git远程仓库的使用)中,我们先在本地创建了空的文件夹,再用 git init 命令将文件夹初始化为仓库,最后用 git remote add 命令,才算是把本地仓库和远程仓库“绑定”,而本期推文我们使用 git clone 命令就可以完成之前的操作,更为快捷


小赵接下来开始收集材料了,为了保持仓库结构的整洁,他为自己的工作创建了一些工作目录,并添加了一些文档和数据:

# 下面这些代码模拟了小赵的工作流程

cd /Users/xiaozhao/Project/
mkdir 文献收集
mkdir 会议记录
mkdir 数据收集

touch 文献收集/文献1.pdf
touch 文献收集/文献2.pdf

touch 会议记录/2023-01-12-会议记录.txt
touch 会议记录/2023-01-14-会议记录.txt

touch 数据收集/2020统计数据.csv
 

小赵做完一段时间工作后,需要把材料提交到远程仓库,给小李使用。提交的命令如下:

# 添加到本地版本库
git add .
git commit -m "添加了数据和会议记录等资料"

# 提交到远程代码库
git push

此时,远程代码库可以看到小赵的提交资料。

(四)小李克隆仓库并开展工作

小李进行了如下操作:

# 进入指定的目录
cd /Users/xiaolee

# 克隆远程仓库到指定目录
git clone git@github.com:TestMailDrWang/Project.git

此时,clone 代码仓库,会把小赵的工作下载到小李的电脑上。

下面的代码,用于模拟小李的工作

cd /Users/xiaolee/Project/

mkdir 计量模型
mkdir 论文写作

touch 计量模型/数据处理.py
touch 计量模型/数据统计.do
touch 计量模型/回归模型.do
touch 计量模型/模型检验.do

touch 论文写作/课题论文.docx

小李完成一个阶段的工作后,也要把相关文档提交到远程仓库。但是,小李工作过程中,小赵又提交了一些材料,则小李直接使用 git push 会报错,因为远程代码库有新的文档,为了保持数据一致,小李需要把远程仓库最新数据同步到本地,然后再 push 自己的文档。

下面我们用代码模拟上述报错和解决问题的过程:

小赵在小李工作时,又提交了一些数据。注意,此时小李还未提交材料到远程仓库:

# 小赵补充材料
cd /Users/xiaozhao/Project/
touch 数据收集/2019统计数据.csv
touch 数据收集/2022统计数据.csv

# 提交到远程仓库
git add .
git commit -m "材料补充"
git push

小李完成工作后也要提交:

git add .
git commit -m "添加计量模型和论文初稿"
git push

此时 git 会报如下错误:

To github.com:TestMailDrWang/Project.git
 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'github.com:TestMailDrWang/Project.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.

这个报错的意思是:有其他人提交了数据到远程仓库,而这些数据在本地仓库中没有,需要用 git pull 拉取最新的数据到本地。

小李可以这样解决报错:

# 将远程仓库最新数据同步到本地,防止报错
git pull

# 将自己的工作提交到远程仓库
git add .
git commit -m "添加计量模型和论文初稿"
git push

此时远程仓库可以看到小李的工作文档。

(五)王教授管理课题进度

王教授可以在Github的页面看到团队成员的提交记录和提交内容。

也可以将远程仓库pull到本地,进行管理和修改。

# 王教授拉取远程代码仓库数据
cd /Users/wang/Project
git pull
  

同样,王教授可以修改文档内容,并提交到远程仓库,小赵和小李只需要重复之前的步骤即可。

Part3本文总结

本期推文,我们学习了如何使用 Git 进行团队协同工作,读者需要熟练掌握以下几个知识点:

  1. 使用 git clone 命令,克隆远程仓库可以简化本地仓库和远程仓库“绑定”的流程
  2. 使用 git push 命令,将本地数据同步到远程仓库
  3. 当出现远程仓库和本地仓库数据不一致时,使用 git pull 拉取最新的数据,然后再进行提交
  4. Github 等平台可以看到成员每次提交的记录可有效管理项目进度,还有项目资料定期备份功能,防止数据被误删

希望大家好好练习和使用 Git ,我们下期再见 !




星标⭐我们不迷路!想要文章及时到,文末“在看”少不了!

点击搜索你感兴趣的内容吧

往期推荐


Python教学 | Python 中的循环结构(上)

Python教学 | Python 中的分支结构(判断语句)

Python教学 | 组合数据类型 - 字典&元组

Python教学 | 组合数据类型-集合(内含实例)

社科大数据平台Python学习系列 | 组合数据类型-列表

社科大数据平台Python学习系列 | Python 变量与基本运算





数据Seminar




这里是大数据、分析技术与学术研究的三叉路口

文 | 《社科领域大数据治理实务手册》


    欢迎扫描👇二维码添加关注    

点击下方“阅读全文”了解更多

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存