Git 的使用¶
本课程使用 Git 作为代码管理工具,GitLab 作为代码管理仓库。为了后续实验的便捷进行,需要掌握 Git 的基本用法。本次实验中,Git 的使用作为大家阅读和探索的部分,不设置需要提交的作业。
Git 配置¶
在 Linux 环境中,我们已经通过 apt 安装了 Git。然而,还需要进行一些配置以确保每次代码提交都能正确标识提交者。在 Shell 中运行以下命令,并将 "Your Name" 和 "Your Email" 替换为你自己的信息:
git config --global user.name "Your Name"
git config --global user.email "Your Email"
这些配置信息会记录每次代码更新的提交者和联系方式,有助于代码的追踪。
创建你的仓库¶
我们将使用 GitLab 进行远程代码管理。虽然你没有权限在 GitLab 上创建仓库,但你可以通过 fork 的方式拥有一个属于自己的仓库。
重要
请确保本课程的 GitLab 用户名为学号,登录希冀平台后点击右上角“更多栏目”登录 GitLab 会直接创建用户名为学号的用户,如果你此前注册过 GitLab,请修改你的用户名为学号,字母大写。
-
进入以下公开仓库链接: https://cscourse.ustc.edu.cn/vdir/Gitlab/compiler_staff/2026ustc-jianmu-compiler
-
点击右上角的 "Fork" 按钮。这个操作会创建一个与原仓库一模一样的新仓库,唯一的区别是,这个新仓库是你自己的。你可以在新仓库上执行任何你需要的操作。
- 点击 "Fork" 后,页面将自动跳转到新的仓库页面,你将成为这个仓库的拥有者,这也会显示在仓库名称旁边。
现在,你已经成功拥有了自己的第一个仓库。接下来,我们可以开始对这个仓库进行修改。
进行一次提交¶
由于仓库目前在服务器上,我们首先得到仓库的 URL,并通过 git clone 将其下载到本地。
- 得到仓库的 URL
- 在 Ubuntu 环境中,利用得到的 URL,克隆仓库到本地
# 使用 URL 进行 git clone
git clone [[https://cscourse.ustc.edu.cn/vdir/Gitlab/XXX]
- 输入 GitLab 用户名和密码进行身份验证,验证完毕后就将服务器上的仓库克隆到了本地
此时,我们可以创建并提交第一个文件
- 创建一个 readme.md 文件
touch README.md
- 在 README.md 中添加 hello world 信息
$ echo "# Hello World" >> README.md
$ cat README.md
# Hello World
- 将 README.md 添加到 git 的暂存区
# git add 指令可以将文件添加到 git 的暂存区
# git 的暂存区是用于存放本次的所有修改
# 这里只 add 了一个文件 但是你可以 add 某一个文件夹,例如 git add .
$ git add README.md
# 我们可以通过 git status 查看 git 的暂存区
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: readme.md
- 提交本次修改并添加提交信息
# 使用 git commit 提交本次修改到 Git 本地仓库
# -m 后面的内容用于帮助记录本次提交的相关信息,要求每次提交最好都记录信息
$ git commit -m 'Add README.md'
[main bc20c0b] add readme
1 file changed, 1 insertion(+)
create mode 100644 readme.md
通过以上操作,我们完成了一次本地修改和提交。然而,请注意这些更改仅存储在本地,需要使用 "git push" 命令将它们上传到服务器,以实现本地和服务器的同步。
$ git push origin main # 推送本地仓库的内容到 Git 远程仓库
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 290 bytes | 290.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://cscourse.ustc.edu.cn/vdir/Gitlab/ustc_gongping/2026_warm_up.git
6d08e6d..bc20c0b main -> main
现在,刷新 GitLab 页面,刚刚提交的内容已经显示在网页上。
上下游同步¶
通过 fork 操作,你已经拥有了一个自己的仓库,在此我们可以引入上下游的概念。假设通过 fork 仓库 A 得到仓库 B,那么 A 就是 B 的上游。尽管 A 和 B 可能有大部分相同的内容,但对 A 和 B 的修改是彼此独立的。在这个课程实验中,我们将以类似的方式发布实验代码,助教维护上游仓库 A,而学生修改下游仓库 B。
以 https://cscourse.ustc.edu.cn/vdir/Gitlab/compiler_staff/2026ustc-jianmu-compiler/ 作为上游仓库为例:
在添加上游仓库之前,我们可以使用 git branch --all -vv 查看本地和远程属于你的所有分支:
添加上游仓库
# 可以通过 git remote add 添加上游仓库
# 用 upstream 标识该上游仓库
$ git remote add upstream https://cscourse.ustc.edu.cn/vdir/Gitlab/compiler_staff/2026ustc-jianmu-compiler.git
bash
# 使用以下命令从上游仓库获取最新代码
$ git fetch upstream
之后再次使用 git branch --all -vv,上游仓库 upstream 的分支已经出现:
扩展材料¶
Git 教程 https://www.liaoxuefeng.com/wiki/896043488029600
Git 文档 https://git-scm.com/book/zh/v2
一个学习 Git 的小游戏 https://learngitbranching.js.org/?locale=zh_CN





