type
status
date
slug
summary
tags
category
icon
password
上次编辑时间
Dec 17, 2024 02:11 PM
AI summary

Git 基础概念

Git 概念汇总

概念
描述
工作区(Workspace)
在本地的代码库,新增和修改的文件会提交到暂存区
暂存区(stage)
用于临时存放文件的修改,实际上是一个文件(. Git/index),保存待提交的文件列表
仓库(repository)
Git 的管理仓库,记录文件状态的地方,所有的代码版本都在里面
远程仓库(origin/remote)
专用的 git 服务器,为多人提供共享服务。本地的仓库通过 ==push==命令将代码推送到远程仓库里
本地仓库
本地电脑内直接使用的版本库
分支(Branch)
分支是从主线分离出的副本,可以独立操作而不干扰主线,仓库初始化后会有一个默认主分支“master”或“main”
(HEAD)
HEAD 类似指针,指向当前活动分支的最新版本
提交(Commit)
将 stage 中的所有变更提交到当前仓库的活动分支
推送(Push)
将本地仓库的版本推送到远程仓库
拉取(Pull)
从远程仓库获取更新到本地仓库
获取(Fetch)
从远程仓库更新,作用同 pull,但是不会自动合并
冲突(Conflict)
多人对同一个文件进行修改后在远程仓库合并时会面临冲突,需要人工合并处理
合并(Merge)
对有 conflict 的文件进行合并操作,git 可以自动合并变更内容,无法自动处理的文件需要人工处理
标签(Tag)
标签指的是某个分支某个特定时间点的状态,可以理解为提交记录的别名,常用来标记版本。
main/master
仓库的默认主分支
origin/main
表示远程仓库的 main 分支

工作区/暂存区/仓库

notion image
  • 图中的 objects 标识的区域为 git 的对象库,实际的位置是“. Git/objects”目录中,里面包含了创建的各种对象和内容
  • 当对工作区的修改/新增文件执行 git add命令后,暂存区的目录树被更新,同时工作区修改/新增文件的内容被写入 objects 的一个新的对象中,而该对象的 ID 被记录在 stage 的文件索引中
  • 当执行 git commit时,stage 的目录树写入 objects 中,main 分支做出更新
  • 当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
  • 当执行 git rm --cached “file” 命令时,会直接从暂存区删除文件,工作区则不做出改变

工作区

本地计算机内的项目文件

暂存区(stage)

暂存区是一个临时存储区域,包含即将提交到版本库中的文件快照 常用命令

版本库(Repository)

版本库包含项目的所有版本历史记录,每次提交都会在版本库中创建一个新的快照,这些快照不可变,确保了项目的完整历史记录 常用命令

三者之间的关系

  • 工作区->暂存区
  • 暂存区->版本库
  • 版本库->远程仓库
  • 远程仓库->本地版本库

Git 工作流程

notion image

1、克隆仓库

如果你要参与一个已有的项目,首先需要将远程仓库克隆到本地:

2、创建新分支

为了避免直接在 main 或 master 分支上进行开发,通常会创建一个新的分支:

3、工作目录

在工作目录中进行代码编辑、添加新文件或删除不需要的文件。

4、暂存文件

将修改过的文件添加到暂存区,以便进行下一步的提交操作:
或者添加所有修改的文件

5、提交更改

将暂存区的更改提交到本地仓库,并添加提交信息:
连接远程仓库

6、拉取最新更改

在推送本地更改之前,最好从远程仓库拉取最新的更改,以避免冲突:
或者如果在新的分支上工作

7、推送更改

将本地的提交推送到远程仓库:

8、删除分支

如果不再需要新功能分支,可以将其删除:
或者从远程仓库删除分支:

Git 指令

notion image

Git 分支

Git 仓库在 fork 中打开后界面如下:
notion image
可以看到每一个分支相互平行,只有完成某些项目的开发时才会合并到主分支。 那么分支有什么用呢?当计划开发一个新的功能时,第一天完成了百分之 50,如果直接提交到 master 分支,则可能导致别人无法开发,如果全部写完再提交的话又可能因为意外丢失之前的进度。此时就体现出来分支的优越性了。我们可能创建一个属于自己的别人不可见的分支,在这个分支上开发提交代码不会影响他人,可以随意操作,等到开发结束了再一次性合并到 master 分支。

Git 分支常用命令