学习目标:
- 破冰活动:提交自我介绍
- 实践项目:创建并提交一个项目
Git 是什么
Git 是一种开源的分布式版本控制系统,广泛应用于软件开发领域,尤其是在协同工作环境中。它为程序员提供了一套必备的工具,使得团队成员能够有效地管理和跟踪代码的历史变更。下面是 Git 的主要功能和作用的规范描述:
官方文档:Git - Book
Git 基础:Git 基础知识
Git 中的一些基本概念
工作区、暂存区和 Git 仓库区
-
工作区(Working Directory):
当我们在本地创建一个 Git 项目,或者从 GitHub 上 clone 代码到本地后,项目所在的这个目录就是“工作区”。这里是我们对项目文件进行编辑和使用的地方。 -
暂存区(Staging Area):
暂存区是 Git 中独有的一个概念,位于 .git 目录中的一个索引文件,记录了下一次提交时将要存入仓库区的文件列表信息。使用 git add 指令可以将工作区的改动放入暂存区。 -
仓库区 / 本地仓库(Repository):
在项目目录中,.git 隐藏目录不属于工作区,而是 Git 的版本仓库。这个仓库区包含了所有历史版本的完整信息,是 Git 项目的“本体”。
文件状态
文件在 Git 工作区中的状态可以是:
- 已跟踪:文件已被纳入版本控制,根据其是否被修改,可以进一步分为未修改(Unmodified)、已修改(Modified)或已暂存(Staged)。
- 未跟踪:文件存在于工作目录中,但还没被纳入版本控制,也未处于暂存状态。
分支
分支是 Git 的一大特性,支持轻量级的分支创建和切换。Git 鼓励频繁使用分支和合并,使得并行开发和错误修正更为高效。
主要功能
-
代码历史记录跟踪
Git 记录每一次代码提交,允许用户查看项目的历史版本和变更记录,从而理解每个阶段的开发细节。
-
团队协作
支持多人同时对同一项目工作,提供了合并、分支和版本控制的功能,以确保多人协作的效率和代码的整合性。
-
变更审查
允许开发者查看代码变更的具体内容,了解谁在何时做了哪些修改,这对于代码审查和质量控制至关重要。
-
实现机制
特性 | 描述 |
---|---|
分布式架构 | 与集中式版本控制系统不同,Git 在每个开发者的机器上都存有完整的代码库副本,包括完整的历史记录。这种分布式的特性增强了数据的安全性和获取效率。 |
分支管理 | Git 的分支管理功能非常灵活,支持无缝切换到不同的开发线路(分支),并允许独立开发、测试新功能,最终通过合并操作将这些功能稳定地集成到主项目中。 |
快照系统 | Git 通过快照而非差异比较来管理数据。每次提交更新时,Git 实际上是在存储一个项目所有文件的快照。如果文件没有变化,Git 只是简单地链接到之前存储的文件快照。 |
1. 安装 Git
1.1 Windows 系统
- 下载并安装适合您 Windows 版本的安装程序:下载地址
- 按照安装向导完成安装。
- 打开终端(win+r→cmd),输入指令
git --version
检查是否安装成功。
1.2 Linux 系统
-
通过包管理器安装 Git:
sudo apt update sudo apt install git
-
输入指令
git --version
检查安装版本。
2. Git 托管平台
- 是全球最大的代码托管平台之一,拥有丰富的开源项目和活跃的开发者社区。它提供了版本控制、项目管理、协作开发等功能,并支持多种编程语言。
- 一个自托管或基于云的平台,提供了完整的 DevOps 工具链,包括代码托管、持续集成/持续部署(CI/CD)、问题跟踪等。
- 国内的代码托管平台,提供了代码托管、项目管理、协作开发等功能,对国内开发者来说,访问速度可能更快,也更符合国内的使用习惯。
Github 需要魔法,可以选择自行选择使用。
3. 常用 Git 操作
基础指令
指令 | 描述 |
---|---|
git config | 配置用户信息和偏好设置 |
git init | 初始化一个新的 Git 仓库 |
git clone | 克隆一个远程仓库到本地 |
git status | 查看仓库当前的状态,显示有变更的文件 |
git add | 将文件更改添加到暂存区 |
git commit | 提交暂存区到仓库区 |
git branch | 列出、创建或删除分支 |
git checkout | 切换分支或恢复工作树文件 |
git merge | 合并两个或更多的开发历史 |
git pull | 从另一仓库获取并合并本地的版本 |
git push | 更新远程引用和相关的对象 |
git remote | 管理跟踪远程仓库的命令 |
git fetch | 从远程仓库获取数据到本地仓库,但不自动合并 |
进阶指令
指令 | 描述 |
---|---|
git stash | 暂存当前工作目录的修改,以便可以切换分支 |
git cherry-pick | 选择一个提交,将其作为新的提交引入 |
git rebase | 将提交从一个分支移动到另一个分支 |
git reset | 重设当前 HEAD 到指定状态,可选修改工作区和暂存区 |
git revert | 通过创建一个新的提交来撤销之前的提交 |
git mv | 移动或重命名一个文件、目录或符号链接,并自动更新索引 |
git rm | 从工作区和索引中删除文件 |
每个指令都有其特定的用途和场景,详细的使用方法和参数可以通过命令行的帮助文档(git command -h
,例如 git pull -h
)来获取更多信息。
学习内容:
首先将项目fork到自己的仓库:
创建一个新分支
git checkout -b camp3_4869 # 自定义一个新的分支
创建自己的md文件
touch ./data/Git/task/camp3_4869.md
即可在vscode查看并填写个人信息
最后提交自己的分支即可,依次输入如下指令:
git add .
git commit -m "add git_4869_introduction" # 提交信息记录
git push origin camp3_3181
点击:Create pull request
https://github.com/InternLM/Tutorial/pull/1883/commits
我是直接fork的另一位的github博客搭建代码:
博主CSDN链接
GitHub - Peninsulazyf/Peninsulazyf.github.io: 张钰枫 Yufeng Zhang
最后大概效果:
https://vegetable-edu.github.io/Sandwich.github.io/