欢迎参加 InternLM Git 教程!此教程旨在帮助您学习和掌握 Git 版本控制系统的基础知识和操作技能。通过完成一系列任务,您将能够更好地理解 Git 的使用,并应用到实际的项目开发中。
关卡任务
以下任务均为必做任务,完成任务后提交相应链接即可。
任务编号 | 任务名称 | 任务描述 |
---|---|---|
1 | 破冰活动 | 提交一份自我介绍。 |
2 | 实践项目 | 创建并提交一个项目。 |
任务详细参见 task.md。
Git 的内容相对简单,但也是最为常用的基础。加油!
Git 是什么
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 只是简单地链接到之前存储的文件快照。 |
安装 Git
1.1 Windows 系统
4.3 验证设置
在设置完用户信息后,你可能想要验证这些设置以确保它们被正确应用。
- 下载并安装适合您 Windows 版本的安装程序:下载地址
- 按照安装向导完成安装。
- 打开终端(win+r→cmd),输入指令
git --version
检查是否安装成功。 -
以前已经安装过GIT。检查下
:\Users\janef>git --version
git version 2.46.0.windows.1
常用 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 config --global user.name "Your Name" git config --global user.email "your.email@example.com"
这里的
"Your Name"
和"your.email@example.com"
应替换为你自己的姓名和电子邮件。 -
本地设置用户信息 首先,确保你当前处于你想要配置的 Git 仓库的目录中。然后,输入以下命令来仅为该仓库设置用户名和电子邮件地址:
git config --local user.name "Your Name" git config --local user.email "your.email@example.com"
同样,替换
"Your Name"
和"your.email@example.com"
为该特定项目中使用的姓名和电子邮件。 -
查看全局配置:
git config --global --list
常规开发流程
- Fork 目标项目
cd Tutorial/ git branch -a git checkout -b camp3 origin/camp3
git checkout -b camp3_5080 # 自定义一个新的分支
touch ./data/Git/task/camp3_5080.md # 修改为自己的问卷ID
git add .
git commit -m "add git_5080_introduction" # 提交信息记录
git push origin camp3_5080
在GITHUB上添加了QQ邮箱后,下面的可以运行成功。
https://github.com/InternLM/Tutorial/pull/1888
最后完成,这个用得少,很多功能还是不熟悉。