Git使用及规范

Git

image

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地管理开发项目。它的读音为/gɪt/。

Git的基本使用包括克隆、本地仓库、分支、提交、拉取、合并、推送等。其中,远程仓库是指我们代码存储在服务器的地方,这个仓库是我们整个团队中所有人都可以访问的地方。克隆是从远程仓库克隆到本地的过程。

Git的优点在于其分布式特性,这使得团队成员可以独立工作,同时又能保持代码的一致性。此外,Git还提供了版本控制、分支管理等功能,可以帮助开发者更好地管理和维护代码。

git教程:
https://www.runoob.com/git/git-tutorial.html

权限

以Gitlab为例,Gitlab用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner。

Guest:可以创建issue、发表评论,不能读写版本库

Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限

Developer:可以克隆代码、开发、提交、push,RD可以赋予这个权限

Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限

Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限

Gitlab中的组和项目有三种访问权限:Private、Internal、Public。

Private:只有组成员才能看到

Internal:只要登录的用户就能看到

Public:所有人都能看到

用户

在获取了代码权限后,可以设置ssh key免密访问或提交代码。

这里只演示最简单的ssh key生成方法。

ssh-keygen
# 有几项回车确认

# 查看pub key
cat ~/.ssh/id_rsa.pub

打开Settings-SSH Keys
image
将文件id_rsa.pub的内容复制到key文本框中即可。

获取代码

打开项目页面,复制网页链接。

运行命令拷贝代码

cd {XXX}
git clone {url}

通常主分支(默认分支)为master或者main。

Git开发流程

首先,任何公共项目不允许修改主分支代码,只能通过在网页上发起Merge Request,将开发分支上的修改合并到主分支上
推荐VSCode开发插件:

  • GitGraph:查看分支、每次提交的修改内容

  • GitLens:在代码编辑器里显示每一行代码的修改信息。其gitgraph功能需要付费,但是个人感觉没有GitGraph好用。

修改代码

创建分支

修改代码首先需要切换到新的分支,用于保存本次开发任务的所有修改。分支命名通常{开发者id}/{分支名},如lambda/nerf,分支名最好体现本次开发任务要实现的功能,开发者id可以使用名字首字母,如lambda/multiple_nerf。

git checkout -b lambda/nerf

提交修改

在README.md里做了一些修改。

在VSCode的版本控制栏里可以看到修改信息。

提交修改操作建议使用命令而不使用GUI,防止手滑误操作。每个commit的说明需要反应本次修改的内容,如果是修复类的修改,前缀最好加Fix

# 将修改的文件添加到缓冲区
git add {文件路径}
# 将所有修改添加到缓冲区
git add .

# 将缓冲区的修改提交到当前分支,生成一次提交
git commit -m "本次修改说明"

撤回修改

如果对刚刚提交的代码不满意,可以将上一次修改撤回到缓冲区。

git reset --soft HEAD^

推送代码

开发完毕或者临时修改的代码,可以推送到服务器上。

git push origin {分支名}

合并代码

合并代码是将当前分支的修改合并到其他分支上,通常是合并到主分支上。

在开发期间,主分支可能会有修改,这些修改可能跟自己开发的内容有冲突,比如修改了同一个函数,就会产生冲突,产生冲突后,通过查看git记录找到冲突的原因,及时沟通,讨论好最终版本,并修改代码解决冲突。

# 拉取最新的代码
git checkout main
git pull origin main

# 更新当前分支的代码,确保跟主分支同步
# 同时解决冲突
git checkout {当前分支}
git rebase main
# 如果出现冲突,会提示失败,并且在缓冲区里出现冲突文件。

# 推送最新的代码到远程仓库
git push origin {当前分支}

Merge Request需要在网页发起。如下图,点击New Merge Request。

在Reviewer里选择本项目/本算法的相关同事,以及本项目负责人,在代码Review结束后,通过合并请求。

快速上手版

# 拉取代码
git clone {代码链接}

# 创建并切换到新分支,以lambda/dev为例
git checkout -b ld/dev

# ---- 开发... ------


# 提交修改到缓冲区
git add {修改的文件}
# 提交所有修改到缓冲区
git add .
# 提交缓冲区的修改到当前分支
git commit -m "修改说明"

# 推送代码到远程服务器
git push origin lambda/dev

# 合并代码,主要是更新主分支代码,解决冲突
git checkout main
git pull origin main
git checkout lambda/dev
git rebase main
# --- 解决冲突... ---

# 推送修改到远程
git push origin lambda/dev -f

# Merge Request在网页端发起
  • 37
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值