# 代码管理相关知识点 ## Git ### Git的概念 Git是一个开源的分布式版本控制系统,它能够高效地处理从小到大的项目。 #### 三个区域的概念 - 工作区 平时存放项目的地方,可以在工作区直接修改。 - 暂存区 用于临时存放改动,保存即将提交的文件列表信息。 - 仓库区(版本库) 就是安全存放数据的位置,这里面有提交到所有版本的数据(版本快照)。 - 仓库的概念 - Git仓库是存储文件和历史记录的地方。 - 节点的概念 是Git中的基本概念,它代表着代码库的一个特定状态。每当你在Git中提交代码时,都会创建一个新的节点来保存当前代码库的状态。每个节点都有一个唯一的标识符,即SHA-1哈希值,用来标识该节点的内容和父节点。 - 分支的概念 是基于节点的一个引用,它指向一个节点作为该分支的起点。通过创建分支,可以在代码库中开发新的功能、修复bug或实施其他更改,而不会影响原始分支。每个分支都有一个名称,通常用来描述该分支的目的或特点。分支之间可以相互合并,通过合并可以将不同分支上的更改合并到一起。 - 文件的状态 - 已修改:文件内容已经被修改。 - 已删除:文件本身已经被删除(工作区删除,存储区还有)。 - 变 更:文件本身没有修改,但是改变了存放位置。 - 未管理:尚未添加到版本管理的文件,比如新添加的文件。 - 忽 略:不需要添加到版本管理的文件。 - 冲 突:合并的时候同时修改了同一块的内容,所有需要人为取解决冲突。 ## SourceTree ### SourceTree的概念 - SourceTree 是 Windows 和Mac OS X 下免费的 **Git 客户端,**拥有可视化界面,容易上手操作。 ### 仓库相关操作 #### **创建本地仓库** ![image-20250708170825330](./pictures/image-20250708170825330.png) #### **打开本地仓库** ![image-20250708170902654](./pictures/image-20250708170902654.png) #### **克隆远程仓库** ![image-20250708171125862](./pictures/image-20250708171125862.png) #### **获取** ​ 获取是从远程仓库获取信息并同步至本地仓库(获取只会同步到本地仓库,不会更改工作文件) ![image-20250709090736034](./pictures/image-20250709090736034.png) #### **关联远程仓库** - ![image-20250708192038104](./pictures/image-20250708192038104.png) ### **节点相关操作** #### **提交** 将工作区的内容放到仓库的这个过程叫做提交。将写完后的文档先添加到暂存区,然后再写日志提交。每一次提交产生一个节点。![image-20250708175643517](./pictures/image-20250708175643517.png)![image-20250708181530873](./pictures/image-20250708181530873.png) #### **重置** (将修改后在未暂存区的东西,恢复修改前的版本) ![image-20250708181118121](./pictures/image-20250708181118121.png) #### 回滚提交 是指将改动的代码提交到本地仓库,但未推送到远端仓库的时候 #### **重置当前分支到此次提交** 是指将改动的代码提交到本地仓库后,并已推送到远端仓库的时候 ### **分支相关操作** #### **新建分支** 创建的分支和主分支是完全一样的东西,新建分支旁边有圈代表分支激活,东西保存在该分支当中。 ![image-20250708182630161](./pictures/image-20250708182630161.png) #### **合并分支** 激活master,选择要合并的支线,点击确定,将支线的所有变化的节点打包创建一个新节点合并过去。 ![image-20250708183742264](./pictures/image-20250708183742264.png) ![](./pictures/image-20250708183826186.png)![image-20250708184116528](./pictures/image-20250708184116528.png) - 变基 ![image-20250708184441709](./pictures/image-20250708184441709.png) 以分支为基合并到master里面 ![image-20250708184812262](./pictures/image-20250708184812262.png) 将之前的提交合并后再并入master ![image-20250708185604586](./pictures/image-20250708185604586.png) #### Source Tree三种合并和区别 混合合并: 是指将此次提交回滚到指定的位置,但这个过程中不会将修改过的文件暂存到暂存区,而是将修改过的文件存放在未暂存文件区。 强行合并: 是指将此次提交回滚到指定的位置,但这个过程中将直接丢弃之前修改的所有文件。 软合并: 软合并是指将此次提交回滚到指定提交位置,但这个过程中会将修改过的文件暂存到暂存区。 #### **删除分支** 第一步先激活主分支 ![image-20250708184916183](./pictures/image-20250708184916183.png)· #### **切换分支** 双击分支名字,出现小圆圈为激活状态。 #### **制造冲突** ![image-20250708190410001](./pictures/image-20250708190410001.png) #### **解决冲突** 在需要提交的文件里面自己手动保留要更改的内容,然后鼠标右键选择已经解决冲突。还有一种方式是以我为准就是保存master的,以别人为准就是合并时候保存分支的。 ### **拉取** 选择从远端仓库中哪个分支获取。 ![image-20250708193822773](./pictures/image-20250708193822773.png) ### **推送** 选择要发送到远端仓库的分支,点击推送。 ![image-20250708193624574](./pictures/image-20250708193624574.png) ### 其他 #### 书写忽略文件 ![image-20250708191109627](./pictures/image-20250708191109627.png)或者在这个隐藏文件中添加忽略的东西,可以是精确文件名,也可以是某一类后缀如*.txt,或者某个文件夹下的文件如/abc ![image-20250708191157488](./pictures/image-20250708191157488.png) #### 停止跟踪 ![image-20250708194308960](./pictures/image-20250708194308960.png) 停止跟踪后就不在受到版本管控 #### 创建补丁 ![image-20250708201504400](./pictures/image-20250708201504400.png) #### 应用补丁 ![image-20250708201320222](./pictures/image-20250708201320222.png) #### 贮藏 (只能暂存区可以) ![image-20250708200138749](./pictures/image-20250708200138749.png)贮藏相当于保留这一次更改到贮藏区域,但是不提交,以后的更改还是争对上一次提交。 #### 丢弃 放弃之前修改的文件,恢复上一次提交状态(只能暂存区可以) ![image-20250708195933808](./pictures/image-20250708195933808.png) #### 移除 (直接删除文件) ![image-20250708195200903](./pictures/image-20250708195200903.png) #### 创建标签 (方便快速找到) ![image-20250708194852689](./pictures/image-20250708194852689.png) #### 删除标签 ![image-20250708195022006](./pictures/image-20250708195022006.png)