协同开发与版本控制基本操作流程(基于Git和Github)

仅做学习记录使用。

本次课程主要的目的是介绍常见的协同开发与版本控制工具——Git的使用,并要求同学们能够利用Git工具和在线的代码托管仓库Github进行多人协同开发与版本控制。

本操作流程包括三个方面:

  1. Git工具的基本使用
  2. Github在线协同开发
  3. 代码的版本控制

因为课堂时间有限,第一部分Git工具的基本使用需要同学们课下进行提前预习,课上我们主要围绕协同开发与版本控制部分进行演示与讲解,有兴趣和时间的同学也可继续预习剩下的部分,预习过程中可往年的课程录播视频(包含基本的使用)

因为课上需要同学们尽量跟随演示自行完成任务,同时为了方便同学们完成课后作业,需要同学们进行如下的准备工作

  1. 准备Ubuntu系统(注意:由于大部分同学使用的还是Windows系统,因此这步不强求,有条件的同学可自行选择用虚拟机安装或使用win10自带的子系统,没有条件的同学也可使用Windows自带的命令行工具;使用MacOS系统的同学可以保持现状),同时掌握命令行工具的基本使用
  2. 安装Git命令行工具,参考 https://git-scm.com/book/zh/v2/起步-安装-Git 或其他网上的相关博文;同时,完整的文档也在Git - Book 下,后续的使用均可参照本文档的内容;
  3. 注册Github账号,并尽量提前与其他同学组成3-4人的队伍,以便于课上进行演示练习和完成课后作业(Github目前在国内访问很不稳定,同学们最好提前注册下国内的代码托管平台“码云”Gitee - 基于 Git 的代码托管和研发协作平台,不能访问github的同学及时换到gitee)

1.Git工具的基本使用(请认真预习该部分)

1.目的:查看版本号,若有输出则为成功安装命令行工具

命令:

git --version(以下命令均针对Ubuntu系统,其他系统命令若不同请根据功能查询对应命令)

示例:

2.目的:创建工作目录并初始化工作目录

命令:

mkdir gitdemo # 建立工作目录

cd gitdemo # 转到工作目录 

git init # 初始化工作目录

ls .git # 查看创建的git隐藏目录

示例:(示例系统为中文环境,若无中文环境则命令输出为英文)

 

3.目的:添加新文件并修改,查看git仓库状态

命令:

touch fileinfo.py # 创建新文件

打开文件,复制已有代码的第1-8行进入新文件

git status # 查看状态,发现文件的状态为未跟踪

示例:

 

4.目的:已修改文件的添加与提交:

命令:

git add fileinfo.py # 添加修改的文件到暂存区

git status # 再次查看状态,发现文件已变为待提交

# 在commit之前,需要设置用户名和邮箱,保证提交者为本人

git config user.email “you@example.com“ # 邮箱为注册github时的账号

git config user.name "Your Name" # 名字为自己的名字或昵称均可

git config user.email # 查看写好的邮箱

git config user.name # 查看写好的名字

git commit -m "initial update" # 提交修改,-m后填写本次提交的说明

git status # 再次查看状态,已无任何文件待追踪或提交

示例:

 

​​​​​​​5.目的:尝试查看暂存区的功能

命令:

touch test1.py # 新建文件1

touch test2.py # 新建文件2

git status # 发现两个文件均为未追踪状态

git add test1.py # 只添加文件1至暂存区

git commit -m “add test1.py” # 进行提交

git status # 发现只有test1.py被提交,test2.py仍未未追踪状态

示例:

 

6.目的:修改文件后的再次提交

命令:

打开文件,复制已有代码的第9-36行进入fileinfo.py

git status # 发现fileinfo.py已经被修改

git diff fileinfo.py # 查看修改的内容,按q可退出

git add fileinfo.py # 添加至暂存区

git commit -m "modify" # 提交修改

示例:

 

 

 

2.Github在线协同开发

1.目的:在github中新建对应的项目(默认已注册好github账号)

2.目的:在本地项目中添加远程仓库,从而可以将代码及各个历史版本  存储在云端

命令:

git remote add origin <仓库链接>

# origin为在线仓库名称,后面的链接从在线仓库处获得,存在多种方式,这里以https为例(若无法连接请切换至gitee)

git remote -v # 查看已经添加好的在线仓库

示例:

3.目的:从云端仓库拉取最新代码与推送本地提交至云端仓库

命令:

git pull origin master

# 从云端拉取最新代码并合并至本地代码,master为分支名(分支不在本课程讲授范围内,如果有同学感兴趣可以在文档中查看并学习,这里我们只使用主分支;主分支名最早默认为master,但因为歧视问题现在默认为main,但这里我修改了我账号中的默认主分支仍为master)

git pull origin master --allow-unrelated-histories

# 合并时可能会出现拒绝合并无关历史的警告,使用参数来进行强制合并;强制合并过程中会要求填写合并说明,可以填写或直接跳过

git push origin master# 之前我们已经提交过两次修改了,这里需要将修改推送到云端仓库,推送过程需要输入密码(如使用ssh方式则无需密码,且速度更快更稳定,但需要进行一定的配置,感兴趣的同学可自行查看);提交成功后打开云端仓库可看到改变情况,点击提交说明可查看提交的具体情况

示例:

 

 

 

4.目的:多人协作开发,其余开发者先fork管理员的目标主仓库,再克隆fork后的仓库并进行自己的开发,提交并推送至自己的仓库,再发起pull request并等待管理员同意与合并

示例: 

​​​​​​​a.开发者先fork,fork后会发现在自己的仓库内出现了fork后的仓库

 

​​​​​​​b.开发者git clone以克隆下来fork后的自己的库(注意不是主库)

 

 c.为了能够让开发者随着跟进管理员主库的改变,需要将主库添加至remote中

d.开发者从主库中pull下来最新的代码

e.开发者向自己的仓库内提交代码,如果向管理员主库提交代码会提示没有权限

 

 

f.回到开发者自己的网页端,创建新的pull request并提交

g.管理员回到自己的网页端,查看主库内新增的pull request,在审查与测试后分别点击按钮允许合并,则开发者的提交合并至主库内

 

h.注意:如果开发者已经被添加到主库的协作者当中,如果开发者有权限,开发者可以自行将自己的pull request合并至主库,但仅限于无需审查的小型项目的快速开发

代码的版本控制

1.目的:代码的版本查看

命令:

git log# 查看提交的版本记录,每次提交都为一个版本,和github页面上展示的版本号一致

示例:

 

 

 2.目的:查看每个版本的具体修改内容

命令:

git show <commit id> # 查看对应版本的具体信息,在云端仓库可视化页面中也可以查看

示例:

 

3.目的:版本的回退与回滚

命令:

git reset --hard <commit id> # 将当前版本回退到指定的版本

git push origin master -f # 将回退的版本强制推送到云端仓库

git revert <commit id> # 回滚当前版本的某一次提交(删除指定的提交)

git push origin master # 回滚相当于一次新的提交,直接推送即可

示例:

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值