第一步:生成 SSH Key
- 进入 Linux 环境
- 安装 Git 和 SSH:
sudo apt update和sudo apt install git openssh-client - 运行
ssh-keygen,生成一个 SSH Key,一路按照默认回车即可 - 生成的 SSH Key 路径默认是 HOME 路径下的
.ssh/id_rsa.pub和.ssh/id_rsa文件。
第二步:配置 Tsinghua GitLab 的 SSH Key
- 登录 https://git.tsinghua.edu.cn/
- 点击右上角的头像,选择
Preferences - 在左边栏中,点击
SSH Keys - 在终端中运行
cat ~/.ssh/id_rsa.pub,即查看id_rsa.pub文件的内容 - 把输出的内容里,以
ssh-rsa打头的一行,完整复制 - 粘贴到第 3 步的浏览器页面中
- 向 Title 的编辑框内随便写入一个名字
- 点击
Add Key按钮 - 可以看到下面的
Your SSH keys多了一项 - 在终端中运行
ssh -T git@git.tsinghua.edu.cn,即用 SSH Key 来尝试访问 https://git.tsinghua.edu.cn/ - 如果出现了
yes/no的提示,输入yes并回车 - 如果配置成功了,它会显示形如
Welcome to GitLab, @xxx!的提示信息
第三步:克隆仓库
- 访问 https://git.tsinghua.edu.cn/physics-data/2025,在下面寻找有自己名字的仓库,点击进入。点击右侧的蓝色按钮 Clone,下面应该会显示
Clone with SSH和一个文本框,点击右边的按钮进行复制,得到的应该是形如git@git.tsinghua.edu.cn/physics-data/2025/self-intro/self-intro-<USER>.git的内容(其中<USER>代表你的用户名)。如果显示的是 https 开头的内容,要重新回到页面复制正确的 URL。 - 回到终端,输入
git clone 刚才复制的内容(在 WSL 中,可以右键点击窗口标题,选择编辑-粘贴),这时候应该能看到形如git clone git@git.tsinghua.edu.cn/physics-data/2025/self-intro/self-intro-<USER>.git的内容,回车以执行。 - 这时候,你可以输入
ls来列出当前目录的内容,应该可以看到一个新的目录,名字为self-intro-<USER>。你可以输入cd self-intro-<USER>来进入这个目录。 - 再次输入
ls,应该可以看到几个文件:README.mdintroduction.txt和grade.py。这就是这个仓库里的文件了。你马上需要更改的就是introduction.txt的内容。
切换分支
🔍 一、基础切换操作
-
查看分支列表
git branch # 列出本地分支,当前分支前标有 `*` git branch -a # 列出所有分支(本地+远程)作用:确认目标分支名称,避免拼写错误。
-
切换到已存在的分支
git checkout <分支名> # 传统写法 git switch <分支名> # Git 2.23+ 推荐,语义更清晰示例:
git switch dev # 切换到 `dev` 分支注意:若分支不存在,命令会报错。
🛠️ 二、创建并切换到新分支
git checkout -b <新分支名> # 传统写法
git switch -c <新分支名> # Git 2.23+ 推荐
示例:
git switch -c feature-login # 创建并切换到 `feature-login` 分支
原理:基于当前分支的最新提交创建新分支,并自动切换。
🔄 三、特殊场景切换技巧
-
切换到上一个分支
git checkout - # 快速返回上一个分支 git switch - # 同上,Git 2.23+ 可用适用场景:临时切换分支后需返回原分支。
-
切换到远程分支
git fetch origin # 先拉取远程分支信息 git switch -c <本地分支名> origin/<远程分支名>示例:
git switch -c hotfix origin/hotfix # 创建本地分支并关联远程 `hotfix`作用:同步远程分支代码到本地新分支。
-
切换到特定提交或标签
git checkout <提交哈希> # 切换到某次提交(进入分离头指针状态) git checkout v1.0 # 切换到标签 `v1.0`注意:此状态下的修改需通过新分支保存,否则可能丢失。
⚠️ 四、切换分支的注意事项
-
未提交修改的处理
- 保存修改:切换前若有未提交的更改,Git 会拒绝切换。需先暂存或提交:
git stash # 暂存修改 git switch dev # 切换分支 git stash pop # 切回后恢复修改 - 强制切换(慎用):
风险:未保存的更改会永久丢失。git checkout -f dev # 丢弃未提交修改,强制切换
- 保存修改:切换前若有未提交的更改,Git 会拒绝切换。需先暂存或提交:
-
冲突预防
若当前分支和目标分支对同一文件有冲突修改,需先解决冲突(如通过git merge或git rebase整合),再切换分支。
💎 五、操作流程示例
# 查看分支
git branch -a # 输出: * main, origin/dev
# 创建并切换到新分支
git switch -c feature-payment
# 开发并提交代码...
git add .
git commit -m "Add payment module"
# 返回 main 分支
git switch main
# 合并新功能
git merge feature-payment
# 清理分支
git branch -d feature-payment
总结
- 基础切换:优先用
git switch(比git checkout更安全清晰)。 - 关联远程:先
git fetch,再通过git switch -c创建关联分支。 - 未提交修改:务必用
git stash暂存或提交更改,避免数据丢失。 - 冲突处理:切换前确保无文件冲突,必要时手动解决。
一些git commit的options
-m <message>
git commit -m "fix: resolve login timeout issue"
-a / --all
- 作用:自动暂存所有已跟踪文件的修改(不包括新文件),直接提交。
- 场景:跳过
git add步骤,快速提交已知文件的改动。 - 注意:新文件仍需手动
git add。 - 示例:
git commit -am "chore: update config files"
--amend
- 作用:修改最近一次提交(补充漏掉的文件或修正提交信息)。
- 场景:
- 提交后发现有文件遗漏:
git add missing.txt && git commit --amend --no-edit - 提交信息写错:
git commit --amend -m "new message"
- 提交后发现有文件遗漏:
- 风险:若已推送到远程,需
git push -f(可能破坏协作分支的历史)。
-p / --patch
- 作用:交互式选择部分代码块暂存,实现原子提交。
- 场景:单文件含多个逻辑修改时,拆分提交保持清晰。
- 操作:
git add -p # 按提示选择代码块 (y/n/q) git commit -m "feat: add user validation"