跳转至

Git 基础操作

这不是一篇 Git 教程,只列出传习社成员日常真正会用到的命令。完整语法请查阅 Git 官方文档

第一次使用前:配置身份

Git 会在每次提交里记录提交人。第一次用 Git 之前必须先告诉它你是谁,否则 git commit 会直接失败:

*** Please tell me who you are.
fatal: unable to auto-detect email address

配置一次,对这台机器上的所有仓库生效:

git config --global user.name "张三"
git config --global user.email "xxx@gzasc.edu.cn"

邮箱要和 GitLab 账号一致

user.email 填你在 GitLab 注册时使用的邮箱。GitLab 靠它把提交关联到你的账号——填错了,提交记录里不会显示你的头像和链接,也不会算进你的贡献。

邮箱以 注册与登录 中登记的为准。

确认是否生效:

git config --global --list

如果只想对某个仓库生效,去掉 --global,并在该仓库目录内执行:

git config user.name "张三"
git config user.email "xxx@gzasc.edu.cn"

user.name 会显示在提交记录里,填真名或常用昵称都可以,只要团队成员能认出你。不要填 rootadmin 这类无法辨认的名字。

顺便统一分支名

本站所有流程都假设主分支叫 main。在新机器上再执行一条,避免本地 git init 出来一个 master 分支:

git config --global init.defaultBranch main

常用命令

命令 作用
git clone <地址> 把远程仓库复制到本地
git status 查看当前有哪些改动
git add <文件> 把改动加入本次提交
git commit -m "消息" 生成一次提交
git pull 拉取远程最新代码
git push 把本地提交推送到远程
git switch <分支> 切换到已有分支
git switch -c <分支> 新建分支并切换过去

git switch 是较新的命令,等价于旧写法 git checkout。看到 git checkout -b 时不必困惑,两者作用相同。

第一次拿代码

git clone ssh://git@10.223.24.16:2201/group/project.git
cd project

如果不在校园网,改用 HTTPS 地址:

git clone https://git.cx-studio.tech/group/project.git

一个完整的小流程

下面的流程覆盖了「接到一个任务 → 提交代码 → 请求合并」的全过程。

# 1. 确认当前在 main,并同步最新代码
git switch main
git pull

# 2. 从 main 创建功能分支
git switch -c feat/example

# 3. 修改代码 ...

# 4. 查看改了什么
git status
git diff

# 5. 暂存并提交
git add .
git commit -m "feat: add example"

# 6. 推送分支到远程
git push -u origin feat/example

推送成功后,终端会输出一个链接。在浏览器打开该链接,或进入 GitLab 仓库页面点击 Create merge request,即可提交 Merge Request。

之后的步骤见 Issue 与 Merge Request

关于直接 push main

不要直接向 main 分支 push

main 是项目的主分支,代表当前可用的稳定版本。直接 push 会绕过评审,一旦出问题会影响所有成员。

正确做法:从 main 新建 feat/*fix/* 分支开发,推送后通过 Merge Request 合并。

如果你已经在本地 main 上提交了代码,可以先把改动挪到新分支,再恢复 main

git switch -c feat/example   # 带着刚才的提交创建新分支
git switch main
git reset --hard origin/main # 让本地 main 与远程一致
git push -u origin feat/example

提交前建议

git status       # 确认没有多余文件
git diff         # 确认改动内容符合预期
git pull         # 避免与远程冲突

不提交哪些文件

不要提交以下内容:

  • 大型 ZIP、视频、模型权重、数据集;
  • 编译产物、依赖目录(如 node_modules/dist/__pycache__/);
  • 密码、Token、密钥、.env 等敏感文件。

在仓库根目录维护 .gitignore 来排除这些文件。示例:

node_modules/
dist/
__pycache__/
.env
*.log

如果误提交了敏感信息,仅删除文件并不够,历史记录中仍然存在。请联系社内负责人协助处理。

相关阅读