L0G3-Git 基础知识
1. 任务一 破冰活动之自我介绍
1.1 配置 git
直接采用全局设置的方式
git config --global user.name "sakuralggm"
git config --global user.email "myemail@qq.com"
查看全局配置
git config --global --list
1.2 fork 项目
1.3 克隆项目到本地
使用 https 的方式 clone
克隆完成后可以看到开发机中已经新增了 Tutorial 目录。
1.4 创建分支
1.4.1 查看分支情况
git branch -a #列出所有分支,包括本地分支和远程分支。
可以看到,此时只有一个本地分支 camp4,它基于远程仓库的默认分支 origin/camp4
。其中 remotes/origin/HEAD -> origin/camp4
表示远程仓库 origin
的默认分支是 camp4
。
1.4.2 创建新分支
git checkout -b class origin/class
命令:
git checkout -b <新分支名> <起始分支>
的作用是:
- 创建一个新的本地分支
<新分支名>
,并基于<起始分支>
。- 切换到新分支。
- 如果
<起始分支>
是远程分支(如origin/class
),新分支会自动跟踪它。
执行完这条命令之后,Git 发生了什么?
- 创建本地分支
class
,并基于远程分支origin/class
。 - 将
HEAD
切换到class
分支。 - 同步
origin/class
的代码到Tutorial
目录。 - 本地
class
分支现在跟踪origin/class
,意味着可以使用git pull
来获取远程class
分支的最新更新。
为什么此时 Tutorial
目录下的文件发生了变化?
- 之前所在的分支是
camp4
(默认分支)。 camp4
和class
有不同的提交历史和文件内容。- 当
checkout
到class
时,Git 会更新工作目录,使其与class
分支的内容一致。因为远程仓库的class
分支的代码和camp4
分支的代码不一样,所以文件发生了变化。
再执行以下命令,创建一个新分支。
git checkout -b class_7593
这条命令:
- 创建本地分支
class_7593
,并基于当前分支class
。 - 将
HEAD
切换到class_7593
。 - 不会同步远程代码,因为
class_7593
只是class
的一个本地副本。
查看此时的分支情况:
可以看到我们当前所在的是本地的 class_7593
分支。
1.4 创建自己的介绍文件
【大家可以叫我】:sakuralggm【坐标】:海南【专业/职业】:学生【兴趣爱好】:乒乓球【项目技能】:cv、nlp【组队情况】:未组队,快来一起!【本课程学习基础】:CV、NLP、LLM【本期活动目标】:学点东西吧。
注意文件要在 icamp4 下创建。
1.5 提交更改分支
通过 git log
可以看到更改被提交到了本地的 class_7593
分支中。
1.6 推送分支到远程仓库
这里的远程仓库是我在 1.2 中 fork 的仓库。
git push
用于将本地分支的提交推送到远程仓库,使远程仓库保持最新。它的基本语法是:git push <远程仓库名> <分支名>
其中:
<远程仓库名>
:通常是origin
,表示远程仓库的名称。<分支名>
:要推送的本地分支名称。
推送分支的命令是:
git push origin class_7593
# 三个拓展命令
# 1. git push origin class_7593 --force # 强制覆盖远程 class_7593 分支的历史,可能导致数据丢失。
# 2. git push origin class_7593 --force-with-lease # 只有在远程分支未被他人修改时才会强制推送,避免误覆盖。
# 3. git push -u origin class_7593 # -u(--set-upstream)将 class_7593 设为跟踪 origin/class_7593,以后可以直接执行git push,而不用每次都指定 origin class_7593了。
执行命令之后Git发生了什么?
- Git 查找远程仓库
origin
(你克隆仓库时默认的远程仓库)。 - Git 查找本地分支
class_7593
,并尝试将其推送到origin
远程仓库。 - 如果
origin
上还没有class_7593
,Git 会在远程创建class_7593
分支,并同步本地内容。 - 如果
origin
已经存在class_7593
- Git 会检查本地
class_7593
是否比远程class_7593
新。 - 如果本地比远程新(有新的提交),推送成功。
- 如果远程比本地新(其他人推送了更新),推送可能会失败,要求先
git pull
。
- Git 会检查本地
执行命令后要求登录github,登录后push成功,截图如下:
1.7 检查提交内容
如图所示,可以看到分支已经被推送到远程仓库。
接下来,将发起pull request,将更改推送到原仓库,请求合并。
点击右上角Compare & pull request。
在“Add a title中”输入 "add git_7593_introduction",base repository选择class
分支,head repository选择class_7593
分支,点击“Create pull request”。
1.8 PR链接
点击前往对应的pr链接
2. 任务二 构建个人项目
创建的大模型相关仓库地址
后续将在这里发布笔记等。
3. 知识积累
3.1 工作区、暂存区和本地仓库区
- 工作区(Working Directory): 当我们在本地创建一个 Git 项目,或者从 GitHub 上 clone 代码到本地后,项目所在的这个目录就是“工作区”。这里是我们对项目文件进行编辑和使用的地方。工作区不包括.git 目录。
- 暂存区(Staging Area): 暂存区是 Git 中独有的一个概念,位于 .git 目录中的一个索引文件,记录了下一次提交时将要存入仓库区的文件列表信息。使用 git add 指令可以将工作区的改动放入暂存区。
- 仓库区 / 本地仓库(Repository): 在项目目录中,.git 隐藏目录不属于工作区,而是 Git 的版本仓库。这个仓库区包含了所有历史版本的完整信息,是 Git 项目的“本体”。即.git 目录。