第一步:生成 SSH Key

  1. 进入 Linux 环境
  2. 安装 Git 和 SSH:sudo apt updatesudo apt install git openssh-client
  3. 运行 ssh-keygen,生成一个 SSH Key,一路按照默认回车即可
  4. 生成的 SSH Key 路径默认是 HOME 路径下的 .ssh/id_rsa.pub.ssh/id_rsa 文件。

第二步:配置 Tsinghua GitLab 的 SSH Key

  1. 登录 https://git.tsinghua.edu.cn/
  2. 点击右上角的头像,选择 Preferences
  3. 在左边栏中,点击 SSH Keys
  4. 在终端中运行 cat ~/.ssh/id_rsa.pub,即查看 id_rsa.pub 文件的内容
  5. 把输出的内容里,以 ssh-rsa 打头的一行,完整复制
  6. 粘贴到第 3 步的浏览器页面中
  7. 向 Title 的编辑框内随便写入一个名字
  8. 点击 Add Key 按钮
  9. 可以看到下面的 Your SSH keys 多了一项
  10. 在终端中运行 ssh -T git@git.tsinghua.edu.cn,即用 SSH Key 来尝试访问 https://git.tsinghua.edu.cn/
  11. 如果出现了 yes/no 的提示,输入 yes 并回车
  12. 如果配置成功了,它会显示形如 Welcome to GitLab, @xxx! 的提示信息

第三步:克隆仓库

  1. 访问 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。
  2. 回到终端,输入 git clone 刚才复制的内容(在 WSL 中,可以右键点击窗口标题,选择编辑-粘贴),这时候应该能看到形如 git clone git@git.tsinghua.edu.cn/physics-data/2025/self-intro/self-intro-<USER>.git 的内容,回车以执行。
  3. 这时候,你可以输入 ls 来列出当前目录的内容,应该可以看到一个新的目录,名字为 self-intro-<USER>。你可以输入 cd self-intro-<USER> 来进入这个目录。
  4. 再次输入 ls ,应该可以看到几个文件:README.md introduction.txtgrade.py 。这就是这个仓库里的文件了。你马上需要更改的就是 introduction.txt 的内容。

切换分支


🔍 一、基础切换操作

  1. 查看分支列表

    git branch          # 列出本地分支,当前分支前标有 `*`
    git branch -a       # 列出所有分支(本地+远程)
    

    作用:确认目标分支名称,避免拼写错误。

  2. 切换到已存在的分支

    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` 分支

原理:基于当前分支的最新提交创建新分支,并自动切换。


🔄 三、特殊场景切换技巧

  1. 切换到上一个分支

    git checkout -   # 快速返回上一个分支
    git switch -     # 同上,Git 2.23+ 可用
    

    适用场景:临时切换分支后需返回原分支。

  2. 切换到远程分支

    git fetch origin                  # 先拉取远程分支信息
    git switch -c <本地分支名> origin/<远程分支名>
    

    示例

    git switch -c hotfix origin/hotfix  # 创建本地分支并关联远程 `hotfix`
    

    作用:同步远程分支代码到本地新分支。

  3. 切换到特定提交或标签

    git checkout <提交哈希>   # 切换到某次提交(进入分离头指针状态)
    git checkout v1.0        # 切换到标签 `v1.0`
    

    注意:此状态下的修改需通过新分支保存,否则可能丢失。


⚠️ 四、切换分支的注意事项

  1. 未提交修改的处理

    • 保存修改:切换前若有未提交的更改,Git 会拒绝切换。需先暂存或提交:
      git stash        # 暂存修改
      git switch dev   # 切换分支
      git stash pop    # 切回后恢复修改
      
    • 强制切换(慎用)
      git checkout -f dev  # 丢弃未提交修改,强制切换
      
      风险:未保存的更改会永久丢失。
  2. 冲突预防
    若当前分支和目标分支对同一文件有冲突修改,需先解决冲突(如通过 git mergegit 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"