本视频为清华大学电子系科协软件部2023年暑期培训内容的录屏,主要培训内容为游戏开发、网站建设中常用的软件工具,为未来一年软件部新部员维护科协网站、开发清华大学人工智能挑战赛(THUAI)作知识铺垫。本次培训还邀请到两位嘉宾讲授Minecraft红石与计算机图形学的部分内容作为拓展。 电子系公众号中有培训内容的简介:https://mp.weixin.qq.com/s/aCCMlLYLMppVT8fiC11-KA
本次培训的课件与作业链接如下:
链接:https://pan.baidu.com/s/1tGu16pndFFc3wdmwS5aG0g?pwd=6ufe
提取码:6ufe
2023 年暑期培训终于出啦!内容涉及从 .NET 开发到网站开发与运维等一系列多人协作开发的相关知识,让它成为你步入全栈开发的敲门砖。
此外,相比于往年的暑期培训,今年暑期培训邀请了清华大学的一位知名的精通计算机图形学的学生讲解《计算机图形学》的专业知识,并且该讲师开创性地以【电子信息与通信工程】的全新角度看待计算机图形学,更加深入地探讨了图形学的本质,这在图形学入门教学中属于【首创】,欢迎同学们来听!
Git的概念和作用
Git是一个分布式版本控制系统,用于跟踪文件的变化并协同开发。它最初由Linus Torvalds为了管理Linux内核开发而创建,现在已经成为广泛使用的版本控制工具。
Git的主要特点包括:
1. 分布式:每个开发者都拥有完整的代码仓库副本,可以独立地进行修改和提交,而不需要依赖中央服务器。这样可以提高开发效率和灵活性,并且在没有网络连接时也可以进行工作。
2. 快速高效:Git使用了一种称为"快照(snapshot)"的方式来存储文件的变化,而不是基于差异的方法。这使得Git非常快速,并且占用较少的存储空间。
3. 分支管理:Git非常强大的分支管理功能使得开发团队能够并行地进行不同的工作,每个分支都可以独立进行开发和测试,最后再合并到主分支中。
4. 版本控制:Git可以记录文件的每次修改,包括添加、删除和修改操作。这意味着可以轻松地回溯到任意历史版本,并恢复或比较文件的不同版本。
5. 公共仓库:Git支持将代码仓库托管到各种公共平台上,如GitHub、GitLab和Bitbucket等,方便多人协作和代码共享。
安装Git
安装Git非常简单,并且有许多不同的方式可以完成。下面是在Windows、Mac和Linux上安装Git的步骤:
在Windows上安装Git
1. 下载Git安装文件。可以在 Git 官网 (https://git-scm.com/downloads) 上下载最新版本的Git安装文件。
2. 双击下载好的 .exe 文件,然后按照提示进行安装。在安装过程中,可以选择默认安装选项或自定义安装选项,根据需要进行选择即可。
3. 在安装完成后,打开命令提示符或PowerShell,并输入以下命令来测试是否安装成功:
```
git --version
```
如果安装成功,将会输出Git的版本信息。
### 在Mac上安装Git
1. 使用Homebrew进行安装。打开终端应用程序并运行以下命令安装Homebrew:
```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
```
2. 运行以下命令安装Git:
```
brew install git
```
3. 在安装完成后,输入以下命令来测试是否安装成功:
```
git --version
```
如果安装成功,将会输出Git的版本信息。
在Linux上安装Git
1. 打开终端并运行以下命令:
```
sudo apt-get update
sudo apt-get install git
```
2. 在安装完成后,输入以下命令来测试是否安装成功:
```
git --version
```
如果安装成功,将会输出Git的版本信息。
常见安装问题和解决方案
1. 安装过程中出现错误,无法继续安装Git。可以尝试重新下载安装文件并重新安装。如果问题仍然存在,可以尝试使用其他方式进行安装,或者查看日志文件以了解问题的原因。
2. 安装完成后,在命令行中输入“git”命令时,出现“git不是内部或外部命令”的错误信息。这可能是由于Git未正确配置系统环境变量所致。在Windows系统中,可以在“环境变量”设置中添加Git的安装目录;在Linux或Mac系统中,可以在~/.bashrc 或 ~/.bash_profile 文件中添加如下语句:PATH=$PATH:/usr/local/git/bin;export PATH。
git的基本概念
当使用Git时,以下是一些更详细的解释和示例命令来帮助您更好地理解Git的基本概念。
1. 仓库(Repository)
Git仓库是存储项目代码的地方。它可以是本地的一个文件夹,也可以是在远程服务器上托管的仓库。在仓库中,Git会跟踪和记录所有代码的变更历史。
- 创建新的本地仓库:
```
git init # 在当前目录初始化一个新的本地仓库
```
- 克隆远程仓库到本地:
```
git clone <remote_repository> # 克隆远程仓库到本地
```
2. 提交(Commit)
提交是将代码的变更保存到Git仓库中的一个操作。每次提交都会生成一个新的版本,它包含了代码的当前状态以及相关的元数据,如作者、时间戳、提交信息等。
- 将修改的文件添加到暂存区域(stage):
```
git add <file> # 将指定文件添加到暂存区域
git add . # 将所有修改的文件添加到暂存区域
```
- 将暂存区域的内容提交到仓库中:
```
git commit -m "message" # 将暂存区域的内容提交到仓库,并添加提交信息
```
3. 分支(Branch)
分支是Git中用于并行开发和管理代码的重要概念。它可以让多个人在同一个仓库中独立地进行开发工作,而不会相互干扰。
- 创建新的分支:
```
git branch <branch_name> # 创建一个新的分支
```
- 切换到指定分支:
```
git checkout <branch_name> # 切换到指定分支
```
- 查看本地所有分支:
```
git branch # 查看本地所有分支
```
- 查看远程所有分支:
```
git branch -r # 查看远程所有分支
```
4. 合并(Merge)
合并是将一个分支的更改整合到另一个分支的过程。当一个分支的工作完成后,可以将其合并到主分支或其他目标分支上,以合并代码的修改。
- 将指定分支的更改合并到当前分支:
```
git merge <branch_name> # 将指定分支的更改合并到当前分支
```
Git的分支管理
Git的分支管理确实是其强大功能之一。下面是一些常见的分支管理操作和策略:
1. 创建分支:使用命令`git branch <branch_name>`可以创建一个新的分支。例如,要创建一个名为"feature"的分支,可以运行命令`git branch feature`。
2. 切换分支:使用命令`git checkout <branch_name>`可以切换到指定的分支。例如,要切换到"feature"分支,可以运行命令`git checkout feature`。
3. 查看分支:使用命令`git branch`可以查看当前仓库中存在的所有分支,并在当前分支前标识"*"。例如,运行命令`git branch`会列出所有分支及当前所在分支。
4. 合并分支:使用命令`git merge <branch_name>`可以将指定的分支合并到当前分支。例如,要将"feature"分支合并到当前分支,可以运行命令`git merge feature`。
5. 删除分支:使用命令`git branch -d <branch_name>`可以删除指定的分支。例如,要删除"feature"分支,可以运行命令`git branch -d feature`。
常见的分支管理策略包括:
- 主分支(master/main):主分支通常用于存放稳定的代码,用于发布版本。对于小型项目,可以直接在主分支上进行开发和维护。对于大型项目,可以考虑使用其他分支进行开发,然后再将代码合并到主分支上。
- 特性分支:特性分支用于开发特定的功能或解决特定的问题。每个特性都可以创建一个独立的分支,开发完成后再合并到主分支上。这样可以保持主分支的稳定性,并方便多人协作开发。
- 发布分支:发布分支用于准备发布版本的代码。在发布分支上进行测试和修复bug,确保代码的可靠性后,再合并到主分支上发布版本。
以上是一些常见的分支管理操作和策略,希望对你有帮助。请记住,Git的分支管理功能非常灵活,你可以根据具体项目的需求和团队的工作流程来选择适合的分支管理方式。
常见的Git基本操作:
1. 初始化仓库:使用 `git init` 命令在当前目录创建一个新的Git仓库。这将在该目录下生成一个名为`.git`的隐藏文件夹,用于存储Git的相关信息。
2. 克隆仓库:使用 `git clone <仓库地址>` 命令将远程仓库克隆到本地。例如,`git clone https://github.com/user/repo.git` 将把名为`repo`的远程仓库克隆到当前目录。
3. 添加文件:使用 `git add <文件名>` 命令将文件添加到暂存区,或使用 `git add .` 添加所有修改过的文件。暂存区相当于一个缓冲区,用于暂时存放文件的修改。
4. 提交变更:使用 `git commit -m "提交信息"` 命令将暂存区的文件提交到本地仓库。提交信息应该清楚地描述此次提交的目的和内容。
5. 查看状态:使用 `git status` 命令查看当前仓库的状态,包括已修改但未暂存、已暂存但未提交的文件等信息。这可以帮助你了解仓库的当前状态。
6. 查看历史:使用 `git log` 命令查看提交历史记录,包括每次提交的作者、提交时间、提交信息等。你可以使用 `git log --graph` 命令以图形化方式查看提交历史。
7. 创建分支:使用 `git branch <分支名>` 命令创建一个新分支。分支可以用于并行开发不同的功能或修复bug,它们是独立于主分支的代码线。
8. 切换分支:使用 `git checkout <分支名>` 命令切换到指定分支。例如,`git checkout feature` 将切换到名为`feature`的分支。
9. 合并分支:使用 `git merge <分支名>` 命令将指定分支合并到当前分支。例如,在主分支上运行`git merge feature` 将把`feature`分支的更改合并到主分支。
10. 拉取更新:使用 `git pull` 命令从远程仓库拉取最新的修改。它会自动合并远程分支的更改到当前分支。
11. 推送更新:使用 `git push` 命令将本地修改推送到远程仓库。例如,`git push origin master` 将把本地的`master`分支推送到名为`origin`的远程仓库。
常见问题和进阶内容
当使用Git时,确实会遇到一些常见问题。以下是一些常见问题和解决方法:
1. 如何解决冲突?
冲突通常发生在合并分支或拉取远程更新时。解决冲突的步骤如下:
- 打开包含冲突的文件,查找标记为 "<<<<<<<"、"======="和 ">>>>>>> "的冲突部分。
- 根据需要编辑文件,去除冲突标记并保留所需的更改。
- 保存文件后,使用 `git add` 命令将文件标记为已解决冲突。
- 最后,使用 `git commit` 提交解决冲突的更改。
2. 如何撤销提交?
如果需要撤销最近的提交,可以使用 `git revert` 或 `git reset` 命令。
- 使用 `git revert <commit>` 可以创建一个新的提交来撤销指定的提交,并且保留历史记录。
- 使用 `git reset <commit>` 可以将当前分支的头指针重置到指定的提交,丢弃指定提交之后的所有更改。
这些只是常见问题的解决方法的简要介绍。如果你对Git有更多的兴趣并想深入了解,可以参考以下进阶内容:
1. [Pro Git](https://git-scm.com/book/en/v2):这是一本免费的电子书,涵盖了Git的各个方面,从基础到高级操作都有详细介绍。
2. [Git 钩子](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks):Git钩子是在特定操作发生时自动触发的脚本,可以用于自定义Git行为。
3. [Git Flow](https://nvie.com/posts/a-successful-git-branching-model/):Git Flow 是一种流行的分支管理工作流程,适用于团队协作和版本控制。
当使用Git时,以下是一些更详细的解释和示例命令来帮助您更好地理解Git的基本概念。
1. 仓库(Repository)
Git仓库是存储项目代码的地方。它可以是本地的一个文件夹,也可以是在远程服务器上托管的仓库。在仓库中,Git会跟踪和记录所有代码的变更历史。
- 创建新的本地仓库:
```
git init # 在当前目录初始化一个新的本地仓库
```
- 克隆远程仓库到本地:
```
git clone <remote_repository> # 克隆远程仓库到本地
```
2. 提交(Commit)
提交是将代码的变更保存到Git仓库中的一个操作。每次提交都会生成一个新的版本,它包含了代码的当前状态以及相关的元数据,如作者、时间戳、提交信息等。
- 将修改的文件添加到暂存区域(stage):
```
git add <file> # 将指定文件添加到暂存区域
git add . # 将所有修改的文件添加到暂存区域
```
- 将暂存区域的内容提交到仓库中:
```
git commit -m "message" # 将暂存区域的内容提交到仓库,并添加提交信息
```
3. 分支(Branch)
分支是Git中用于并行开发和管理代码的重要概念。它可以让多个人在同一个仓库中独立地进行开发工作,而不会相互干扰。
- 创建新的分支:
```
git branch <branch_name> # 创建一个新的分支
```
- 切换到指定分支:
```
git checkout <branch_name> # 切换到指定分支
```
- 查看本地所有分支:
```
git branch # 查看本地所有分支
```
- 查看远程所有分支:
```
git branch -r # 查看远程所有分支
```
4. 合并(Merge)
合并是将一个分支的更改整合到另一个分支的过程。当一个分支的工作完成后,可以将其合并到主分支或其他目标分支上,以合并代码的修改。
- 将指定分支的更改合并到当前分支:
```
git merge <branch_name> # 将指定分支的更改合并到当前分支
```
使用Git进行版本控制
当你使用 Git 进行版本控制时,通常会遵循以下基本步骤:
1. **初始化仓库**:在项目文件夹中打开命令行工具,运行 `git init` 命令来初始化一个新的 Git 仓库。
2. **添加文件**:使用 `git add` 命令将文件添加到暂存区,例如 `git add filename`。
3. **提交更改**:运行 `git commit -m "提交信息"` 命令来提交已暂存的文件并附上一条简短的提交信息。
4. **查看状态**:可以随时使用 `git status` 命令来查看文件的状态以及已暂存和未暂存的更改。
5. **查看提交历史**:使用 `git log` 命令来查看提交历史记录,包括作者、日期和提交信息。
6. **创建分支**:使用 `git branch branchname` 命令来创建新的分支,然后使用 `git checkout branchname` 切换到新分支。
7. **合并分支**:在需要时,可以使用 `git merge` 命令将一个分支的更改合并到当前分支。
8. **远程操作**:如果需要与远程仓库进行交互,可以使用 `git remote add origin <远程仓库地址>` 来添加远程仓库,然后使用 `git push` 和 `git pull` 分别推送和拉取代码更改。
为什么需要版本控制
版本控制是一种管理和跟踪软件开发过程中的变化的方法。它具有以下几个重要的原因和优势:
1. 多人协作:在团队中进行软件开发时,每个人都可能对同一个代码库进行修改。版本控制可以帮助团队成员协同工作,轻松地合并彼此的更改,避免冲突和数据丢失。
2. 变更追踪:版本控制系统可以记录每次代码的变更,包括谁做了什么修改,何时进行的修改,以及为什么进行修改。这样可以方便地查找问题、回溯历史版本,并追踪每个变更的目的和背景。
3. 代码备份与恢复:通过版本控制系统,可以定期备份整个代码库,并在需要时恢复到任意历史版本。这对于避免意外数据丢失和恢复错误操作非常有用。
4. 版本发布:版本控制系统可以帮助开发团队管理软件的不同版本。可以为每个发布版本创建一个标签或分支,以便随时回滚到特定版本,或者在不同的版本之间进行切换。
5. 合并与分支:版本控制系统可以让开发人员创建不同的分支,以独立开发不同的功能或修复不同的问题。然后,可以轻松地将这些分支合并到主代码库中,确保代码的稳定性和一致性。
分支管理
Git的分支管理是其强大功能之一。在这个部分,可以介绍如何创建分支、切换分支、合并分支、删除分支等操作,并提供一些常见的分支管理策略,如主分支(master/main)和特性分支的使用方法。
Git的分支管理确实是其强大功能之一。下面是一些常见的分支管理操作和策略:
1. 创建分支:使用命令`git branch <branch_name>`可以创建一个新的分支。例如,要创建一个名为"feature"的分支,可以运行命令`git branch feature`。
2. 切换分支:使用命令`git checkout <branch_name>`可以切换到指定的分支。例如,要切换到"feature"分支,可以运行命令`git checkout feature`。
3. 查看分支:使用命令`git branch`可以查看当前仓库中存在的所有分支,并在当前分支前标识"*"。例如,运行命令`git branch`会列出所有分支及当前所在分支。
4. 合并分支:使用命令`git merge <branch_name>`可以将指定的分支合并到当前分支。例如,要将"feature"分支合并到当前分支,可以运行命令`git merge feature`。
5. 删除分支:使用命令`git branch -d <branch_name>`可以删除指定的分支。例如,要删除"feature"分支,可以运行命令`git branch -d feature`。
常见的分支管理策略包括:
- 主分支(master/main):主分支通常用于存放稳定的代码,用于发布版本。对于小型项目,可以直接在主分支上进行开发和维护。对于大型项目,可以考虑使用其他分支进行开发,然后再将代码合并到主分支上。
- 特性分支:特性分支用于开发特定的功能或解决特定的问题。每个特性都可以创建一个独立的分支,开发完成后再合并到主分支上。这样可以保持主分支的稳定性,并方便多人协作开发。
- 发布分支:发布分支用于准备发布版本的代码。在发布分支上进行测试和修复bug,确保代码的可靠性后,再合并到主分支上发布版本。