L0G3-Git 基础知识

L0G3-Git 基础知识

1. 任务一 破冰活动之自我介绍

1.1 配置 git

直接采用全局设置的方式

git config --global user.name "sakuralggm"
git config --global user.email "myemail@qq.com"

查看全局配置

git config --global --list

image-20250205180836971

1.2 fork 项目

image-20250205181024617

1.3 克隆项目到本地

使用 https 的方式 clone

image-20250205181210195

克隆完成后可以看到开发机中已经新增了 Tutorial 目录。

image-20250205181315059

1.4 创建分支

1.4.1 查看分支情况

git branch -a #列出所有分支,包括本地分支和远程分支。

image-20250205183042957

可以看到,此时只有一个本地分支 camp4,它基于远程仓库的默认分支 origin/camp4。其中 remotes/origin/HEAD -> origin/camp4 表示远程仓库 origin 的默认分支是 camp4

1.4.2 创建新分支

git checkout -b class origin/class

命令:

git checkout -b <新分支名> <起始分支>

的作用是:

  1. 创建一个新的本地分支 <新分支名>,并基于 <起始分支>
  2. 切换到新分支
  3. 如果 <起始分支> 是远程分支(如 origin/class),新分支会自动跟踪它。

执行完这条命令之后,Git 发生了什么?

  1. 创建本地分支 class,并基于远程分支 origin/class
  2. HEAD 切换到 class 分支。
  3. 同步 origin/class 的代码到 Tutorial 目录。
  4. 本地 class 分支现在跟踪 origin/class,意味着可以使用 git pull 来获取远程 class 分支的最新更新。

image-20250205183942123

为什么此时 Tutorial 目录下的文件发生了变化?

  • 之前所在的分支是 camp4(默认分支)。
  • camp4class 有不同的提交历史和文件内容。
  • checkoutclass 时,Git 会更新工作目录,使其与 class 分支的内容一致。因为远程仓库的 class 分支的代码和 camp4 分支的代码不一样,所以文件发生了变化。

image-20250205183921602

再执行以下命令,创建一个新分支。

git checkout -b class_7593

这条命令:

  1. 创建本地分支 class_7593,并基于当前分支 class
  2. HEAD 切换到 class_7593
  3. 不会同步远程代码,因为 class_7593 只是 class 的一个本地副本

查看此时的分支情况:

image-20250205184155921

可以看到我们当前所在的是本地的 class_7593 分支。

1.4 创建自己的介绍文件

【大家可以叫我】:sakuralggm

【坐标】:海南

【专业/职业】:学生

【兴趣爱好】:乒乓球

【项目技能】:cv、nlp

【组队情况】:未组队,快来一起!

【本课程学习基础】:CV、NLP、LLM

【本期活动目标】:学点东西吧。

注意文件要在 icamp4 下创建。

image-20250205205111485

1.5 提交更改分支

image-20250205205329137

通过 git log 可以看到更改被提交到了本地的 class_7593 分支中。

image-20250205205319513

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发生了什么?

  1. Git 查找远程仓库 origin(你克隆仓库时默认的远程仓库)。
  2. Git 查找本地分支 class_7593,并尝试将其推送到 origin 远程仓库。
  3. 如果 origin 上还没有 class_7593,Git 会在远程创建 class_7593 分支,并同步本地内容。
  4. 如果 origin 已经存在 class_7593
    • Git 会检查本地 class_7593 是否比远程 class_7593 新。
    • 如果本地比远程新(有新的提交),推送成功。
    • 如果远程比本地新(其他人推送了更新),推送可能会失败,要求先 git pull

执行命令后要求登录github,登录后push成功,截图如下:

image-20250205210310947

1.7 检查提交内容

如图所示,可以看到分支已经被推送到远程仓库。

image-20250205210433285

接下来,将发起pull request,将更改推送到原仓库,请求合并。

点击右上角Compare & pull request。

image-20250205210721788

在“Add a title中”输入 "add git_7593_introduction",base repository选择class分支,head repository选择class_7593分支,点击“Create pull request”。

image-20250205210832025

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 目录。

工作区、暂存区和本地仓库区

posted @ 2025-02-06 23:31  sakuraLGGM  阅读(44)  评论(0)    收藏  举报