研一新生生存指南:如何在实验室愉快地使用 GitLab

欢迎来到研究生的世界!刚进实验室,师兄师姐可能会丢给你一个 GitLab 地址,让你“把代码拉下来跑一下”。别慌,这篇指南经过本人的实践,可以帮大家快速上手,避免踩坑,从“代码小白”平滑过渡到“科研合作者”。

不需要背复杂的命令,不需要懂底层原理,我只讲每天都会用到的操作。

1. 第一步:配好钥匙 (SSH Key)

进实验室要刷卡,进 GitLab 也要刷卡。但我们不推荐用账号密码(太麻烦且不安全),而是用 SSH Key。它就像你电脑的“电子指纹”,配好之后,以后推送代码都不用输密码。

傻瓜式配置三步走:

  1. 生成钥匙:
    打开你的终端(Windows 用户请打开 Git Bash),输入下面这行命令,然后一路狂按回车(不需要设密码):
    Bash
    ssh-keygen -t ed25519 -C “你的学校邮箱@edu.cn”

    解释:我们用的是 ed25519 算法,比老的 RSA 更快更短。 1

  2. 复制公钥:
    继续在终端输入命令,把生成的公钥内容复制到剪贴板:

    • Windows (Git Bash): cat ~/.ssh/id_ed25519.pub | clip
    • Mac: pbcopy < ~/.ssh/id_ed25519.pub
    • Linux: cat ~/.ssh/id_ed25519.pub (然后手动选中复制)
  3. 粘贴到 GitLab:
    登录实验室的 GitLab 网页,点击右上角头像 -> Preferences (或 Settings) -> SSH Keys。
    把刚才复制的一长串字符粘贴到 “Key” 的框里,点击 “Add key”。搞定!

2. 只有这 5 个命令是必须背的

做科研不像做软件开发那么复杂,记住这 5 个命令,能覆盖你 90% 的工作场景。

把 Git 想象成一个游戏存档系统

  1. git clone <地址>下载游戏
    • 刚开始项目时用一次,把远程代码下载到你本地。
    • 例子:git clone git@gitlab.lab.edu:group/project.git
  2. git pull同步存档
    • 每次开始干活前,先运行一下,把师兄师姐更新的代码拉下来,防止冲突。
  3. git add.挑选要保存的装备
    • 告诉 Git 你想保存哪些文件的修改。. 代表“当前目录下的所有文件”。
  4. git commit -m “写清楚你干了什么”确认存档
    • 这步是真正的保存。双引号里一定要写人话!
    • 错误示范: “update”
    • 正确示范: “修复了数据加载的bug” 或 “增加了Transformer层”
  5. git push上传存档到云端
    • 把你的修改推送到 GitLab 服务器,这样导师就能看到了。

3. 实验室合作的“潜规则”:分支与 Merge Request

在本科自己写作业时,你可能一直都在 master 或 main 分支上改代码。但在实验室,绝对不要直接推送到 main 分支! main 分支是神圣的,存放的是“肯定能跑通”的代码。

正确的合作姿势:

  1. 开小号(新建分支):
    每当你要做一个新实验或者改个功能,先切一个新的分支:
    Bash
    git checkout -b feature/new-experiment

    在这个分支上,你随便怎么改都行,炸了也不影响主分支。 3

  2. 提交请求(Merge Request / MR):
    当你在分支上改完代码并 push 后,GitLab 页面上会出现一个大大的 “Create Merge Request” 按钮。

    • 点击它,写清楚你改了什么。
    • Assignee 选你自己,Reviewer 选带你的师兄或导师。
    • 这就像提交一份“作业”,让他们检查(Code Review)一下,没问题了再合并进去。

4. 遇到“冲突”怎么办?(救命指南)

当你和师兄同时改了同一个文件的同一行代码,Git 就会懵圈,报 Merge Conflict

千万别慌,也别去手动删那些 <<<< 符号。

推荐工具:VS Code

  1. 用 VS Code 打开冲突的文件。
  2. 你会看到冲突的地方被高亮了,上面有几个按钮:
    • Accept Current Change:保留你的修改。
    • Accept Incoming Change:保留师兄的修改。
    • Accept Both Changes:两个都留着。
  3. 点一下按钮,冲突就解除了,然后保存文件,重新 add 和 commit 即可。

5. 研一新生的两个“不要”

5.1 不要上传大数据集

Git 是用来管代码的,不是网盘!

  • 原则:超过 100MB 的文件(比如 .pth 模型权重、ImageNet 数据集)严禁上传到 Git。
  • 后果:会让仓库变得巨大无比,所有人拉代码都卡死。
  • 解决:数据放实验室服务器的硬盘里,代码里写路径去读取。或者用 .gitignore 文件把 data/ 文件夹忽略掉。

5.2 不要直接上传 Jupyter Notebook (.ipynb)

Notebook 很好用,但它也是 Git 的噩梦。因为你稍微重新运行一下,里面的输出图片和行号就会变,Git 会认为整个文件都变了。

  • 解决:在提交前,手动点一下 Clear All Output
  • 进阶:如果你嫌麻烦,可以装一个叫 nbstripout 的小工具,它会自动帮你清理输出。

6. 最后的建议:.gitignore 是你的好朋友

在项目根目录下创建一个名为 .gitignore 的文件,把不需要上传的东西列进去。这能让你看起来很专业。

一个标准的 Python 科研项目 .gitignore 模板:

忽略 Python 编译文件

pycache/
*.pyc

忽略数据集和模型权重

data/
checkpoints/
*.pth
*.ckpt

忽略 IDE 配置文件

.vscode/
.idea/

忽略系统文件

.DS_Store


总结:每天开工 git pull,干活在分支 checkout -b,改完 add + commit,下班前 push 并提个 MR。保持这个节奏,任务就已经成功了一半!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐