Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

14 KiB

代码管理相关知识点

Git

Git的概念

Git是一个开源的分布式版本控制系统,它能够高效地处理从小到大的项目。

三个区域的概念

  • 工作区

    平时存放项目的地方,可以在工作区直接修改。

  • 暂存区

    用于临时存放改动,保存即将提交的文件列表信息。

  • 仓库区(版本库)

    就是安全存放数据的位置,这里面有提交到所有版本的数据(版本快照)。

  • 仓库的概念

    • Git仓库是存储文件和历史记录的地方。
  • 节点的概念

    是Git中的基本概念,它代表着代码库的一个特定状态。每当你在Git中提交代码时,都会创建一个新的节点来保存当前代码库的状态。每个节点都有一个唯一的标识符,即SHA-1哈希值,用来标识该节点的内容和父节点。

  • 分支的概念

    是基于节点的一个引用,它指向一个节点作为该分支的起点。通过创建分支,可以在代码库中开发新的功能、修复bug或实施其他更改,而不会影响原始分支。每个分支都有一个名称,通常用来描述该分支的目的或特点。分支之间可以相互合并,通过合并可以将不同分支上的更改合并到一起。

  • 文件的状态

    • 已修改:文件内容已经被修改。
    • 已删除:文件本身已经被删除(工作区删除,存储区还有)。
    • 变 更:文件本身没有修改,但是改变了存放位置。
    • 未管理:尚未添加到版本管理的文件,比如新添加的文件。
    • 忽 略:不需要添加到版本管理的文件。
    • 冲 突:合并的时候同时修改了同一块的内容,所有需要人为取解决冲突。

SourceTree

SourceTree的概念

  • SourceTree 是 Windows 和Mac OS X 下免费的 **Git 客户端,**拥有可视化界面,容易上手操作。

仓库相关操作

创建本地仓库

在浏览里面选择我们要创建本地仓库的文件夹。

image-20250708170825330

打开本地仓库

image-20250708170902654

注意:在打开目标仓库的路径时候,不能点进隐藏文件.git文件

image-20250715083550523

克隆远程仓库

获取URL:http://gitea.xinje.cc/wangshunkui/kong.git

image-20250715083923012

克隆

image-20250708171125862

获取

获取是从远程仓库获取信息并同步至本地仓库(获取只会同步到本地仓库,不会更改工作文件)

image-20250709090736034

关联远程仓库

image-20250715084429589

image-20250715084510609

image-20250715084704021

注意:步骤四自己对远端电脑随便取个名就行。

节点相关操作

提交

将工作区的内容放到仓库的这个过程叫做提交。将写完后的文档先添加到暂存区,然后再写日志提交。每一次提交产生一个节点。image-20250708175643517image-20250708181530873

回滚提交

“回滚提交”指的是对 Git 历史中的某个提交进行撤销、修改或恢复的操作。常见的回滚行为包括:

  • 撤销最近的提交
  • 恢复到某个旧的提交版本
  • 撤销某一次错误的提交(保留历史)

回滚提交多步时候会产生冲突,所以这时候需要我们去解决冲突。

image-20250715084950287

重置当前分支到此次提交

image-20250715085302303

image-20250715085358478

Source Tree三种合并和区别

混合合并:

是指将此次提交回滚到指定的位置,但这个过程中不会将修改过的文件暂存到暂存区,而是将修改过的文件存放在未暂存文件区。

强行合并:

是指将此次提交回滚到指定的位置,但这个过程中将直接丢弃之前修改的所有文件。

软合并:

软合并是指将此次提交回滚到指定提交位置,但这个过程中会将修改过的文件暂存到暂存区。

分支相关操作

新建分支

创建的分支和主分支是完全一样的东西,新建分支旁边有圈代表分支激活,东西保存在该分支当中。

image-20250708182630161

合并分支

激活master,选择要合并的支线,点击确定,将支线的所有变化的节点打包创建一个新节点合并过去。

  1. 切换到目标分支(如 master

  2. 点击上方菜单栏的:分支 → 合并(Merge)

  3. 在弹窗中选择你要合并进来的源分支(如 dev1

  4. 点击“确定”开始合并

  5. 如果有冲突,会提示你处理冲突

  6. 处理完冲突后,提交合并记录

image-20250715085914861

image-20250715090114147

image-20250715090300179

删除分支

  1. 切换出要删除的分支,你不能删除当前正在使用的分支。请先切换到其他分支
  2. 在左侧分支列表中,右键你要删除的分支
  3. 选择 “删除分支”
  4. 会弹出确认窗口,点击 “删除” 确认即可

注意尚未合并的分支不能删除(即没有备份的分支)

image-20250715090620031

image-20250715090534825

切换分支

双击要切换的分支名字,出现小圆圈为激活状态。

制造冲突

本地冲突:

​ 如果分支一修改了1.txt,分支2修改了1.txt且修改位置意义,修改内容不同合并时候就会产生冲突。

远程冲突:

image-20250715101748612

本地3.txt的内容:

image-20250715101840211

远端3.txt的内容:

image-20250715101921523

修改本地3.txt的内容:

image-20250715101958607

提交推送:

image-20250715102053788

报错:

image-20250715102118699

image-20250715102233715

解决冲突

本地冲突:

​ 方式一:在需要提交的文件里面自己手动保留要更改的内容,然后鼠标右键选择已经解决冲突。

​ 方式二:方式是以我为准激活的分支的内容是我要保留的内容。

​ 方式三:以别人为准就是合并时候保存要合并的那个分支的内容。

远程冲突:

​ 拉取:image-20250715102301151

image-20250715102318702

image-20250715102348307

解决冲突再重新推送:

image-20250715102453244

拉取

选择从远端仓库中哪个分支获取。

image-20250715091303896

image-20250708193822773

推送

选择要发送到远端仓库的分支,点击推送。

image-20250715091337901

image-20250708193624574

其他

书写忽略文件

方式一:选择修改的文件,右击选择忽略。

image-20250708191109627

方式二:

image-20250715091619608

image-20250715091647725

image-20250715091712480

image-20250715091748023

  1. 忽略指定文件:在 .gitignore 中添加精确文件名,如 lalala.txt,表示忽略该文件的所有更改。

  2. 忽略特定类型的文件:使用通配符后缀,如 *.md 表示忽略所有 .md 结尾的文件。

  3. 忽略特定文件夹:使用路径方式,如 /name 表示忽略项目根目录下的 name 文件夹及其所有内容。

停止跟踪

停止跟踪的作用是让 Git 不再对某个已经被版本控制的文件或文件夹进行管理,这意味着即使你之后对该文件进行了修改、重命名或删除,Git 也不会再将这些更改记录到提交中。

本地文件停止跟踪:

方式一:选择要停止跟踪的文件,然后右击鼠标,选择停止跟踪。

image-20250708194308960

方式二:没有更改需要停止跟踪的文件,选择停止跟踪。

  1. 第一步,选择要停止跟踪的文件
  2. 点击操作
  3. 点击停止跟踪

image-20250715092825607

image-20250715092854248

停止跟踪远程分支:

image-20250715093055328

创建补丁

  1. SourceTree 中,**选择你要导出补丁的提交
  2. 右键点击 → 选择 “创建补丁” 或 “Export patch”
  3. 选择保存路径,SourceTree 会导出为 .patch 文件
  4. 将该补丁文件发送给他人或用于其他仓库应用

image-20250715104051326

image-20250715104131125

应用补丁

选择补丁的位置选择补丁,点击应用。

image-20250708201320222

1. 分支上的 1.txt 内容与补丁内容完全一致

  • 表现:补丁内容已经存在于文件中,Git 会检测到没有变化,通常补丁应用无效或跳过这部分,不会重复添加。
  • 结果:补丁不产生新改动,应用成功但无实际更改。

image-20250715104246489

2. 分支上的 1.txt 是空文件

  • 表现:补丁中添加的内容(+1)会被完整地添加到空文件中。

  • 结果:文件由空变成包含补丁内容,补丁完全应用成功。

    image-20250715104334193

    image-20250715104441837

3. 分支上的 1.txt 内容与补丁内容部分一致

  • 表现:补丁中新增的内容与已有部分有重叠,Git 会尝试合并,可能成功应用新增部分,或者产生冲突需要手动解决。
  • 结果:补丁部分应用成功,冲突部分需人工介入。

image-20250715105229020

image-20250715105307319

image-20250715105716186

image-20250715105823879

image-20250715105843945

image-20250715105911056

4. 分支中没有 1.txt 文件

  • 表现:如果补丁涉及新增文件,Git 会直接创建 1.txt 并写入补丁内容;如果补丁只修改文件而文件不存在,则应用失败报错。
  • 结果
    • 补丁新增文件时,文件被创建且内容写入。
    • 补丁修改文件但文件缺失时,补丁应用失败。

image-20250715104610912image-20250715104949285

image-20250715104822311

image-20250715105052163

贮藏

贮藏的典型用途:

  • 临时切换分支处理紧急任务
  • 拉取或合并最新代码前清理工作区
  • 保存不完整的改动,避免提交不完整代码

image-20250708200138749贮藏操作会将你当前工作区和暂存区的改动(包括新增、修改、删除的文件)保存到一个栈中,同时将工作目录恢复到干净状态,就像没有修改过一样。这使你能够 快速切换分支、拉取最新代码或进行其他操作,而不必担心未完成的改动被提交或丢失

丢弃

丢弃 指的是放弃当前工作目录或暂存区中的修改,将文件恢复到最后一次提交的状态。也就是说,丢弃操作会撤销你对文件所做的所有未提交更改,使文件内容回到仓库中最新提交的版本。

image-20250708195933808

移除

(直接删除工作区的文件)

image-20250708195200903

创建标签

标识版本:标签常用来标记软件的版本号,如 v1.0.0v2.1.3,方便团队成员和用户明确某次发布对应的代码状态。

便于回溯:通过标签可以快速跳转到对应提交,便于查阅、回滚或打包特定版本代码。

不可变标记:与分支不同,标签是固定的引用,不会随后续提交移动,保证历史版本的稳定性。

支持轻量标签和附注标签:轻量标签只是简单指向提交的指针,附注标签则包含作者信息、日期和描述,适合用于发布说明。

image-20250715094336938

image-20250708194852689

单击标签,切换到标签的节点所在位置。双击标签可以切换到标签节点的内容。

删除标签

image-20250715094614190

检出分支

image-20250715110124406

image-20250715110143327