Git是一个开源的分布式版本控制系统,它能够高效地处理从小到大的项目。
工作区
平时存放项目的地方,可以在工作区直接修改。
暂存区
用于临时存放改动,保存即将提交的文件列表信息。
仓库区(版本库)
就是安全存放数据的位置,这里面有提交到所有版本的数据(版本快照)。
仓库的概念
节点的概念
是Git中的基本概念,它代表着代码库的一个特定状态。每当你在Git中提交代码时,都会创建一个新的节点来保存当前代码库的状态。每个节点都有一个唯一的标识符,即SHA-1哈希值,用来标识该节点的内容和父节点。
分支的概念
是基于节点的一个引用,它指向一个节点作为该分支的起点。通过创建分支,可以在代码库中开发新的功能、修复bug或实施其他更改,而不会影响原始分支。每个分支都有一个名称,通常用来描述该分支的目的或特点。分支之间可以相互合并,通过合并可以将不同分支上的更改合并到一起。
文件的状态
在浏览里面选择我们要创建本地仓库的文件夹。
点击是
创建成功
浏览里面选择要创建仓库的文件夹,即可以在该文件夹建立一个仓库,生成.git文件。
注意:在打开目标仓库的路径时候,不能点进隐藏文件.git文件
获取URL:http://gitea.xinje.cc/wangshunkui/kong.git
克隆
获取是从远程仓库获取信息并同步至本地仓库(获取只会同步到本地仓库,不会更改工作文件)
注意:步骤四自己对远端电脑随便取个名就行。
在 SourceTree
中,克隆远程仓库是指从远程 Git 仓库中下载完整的项目代码和提交历史,创建一个新的本地项目副本;而关联远程仓库是指在本地已存在的 Git 仓库中,添加一个远程仓库地址,以便将本地代码推送到远程或从远程拉取更新。两者的主要区别在于:克隆用于从远程获取项目,自动建立关联并初始化本地项目;而关联远程用于让已有的本地项目与远程仓库建立联系,通常用于首次推送代码。
将工作区的内容放到仓库的这个过程叫做提交。将写完后的文档先添加到暂存区,然后再写日志提交。每一次提交产生一个节点。
“回滚提交”指的是对 Git 历史中的某个提交进行撤销、修改或恢复的操作。常见的回滚行为包括:
混合合并:
混合合并以后文件文件保存到了未暂存区,提供一次修改机会。
强行合并:
是指将此次提交回滚到指定的位置,但这个过程中将直接丢弃之前修改的所有文件。
软合并:
软合并之后,文件保存到暂存区,给一次修改机会。
创建的分支和主分支是完全一样的东西,新建分支旁边有圈代表分支激活,东西保存在该分支当中。
激活master,选择要合并的支线,点击确定,将支线的所有变化的节点打包创建一个新节点合并过去。
master
)dev1
)解决冲突
合并成功
合并成功
注意尚未合并的分支不能删除(即没有备份的分支)
强行删除没有合并的分支
因为分支没有和主分支合并,所以删除失败
场景 | 意义 |
---|---|
🔁 分支内容无用 | 某个分支用于试验、测试,最终未采用,强行删除避免冗余。 |
🧹 清理历史 | 清理长期未合并、开发中断的“僵尸分支”。 |
🚫 修复误操作 | 某分支是误建的,未提交或提交错误,无法 merge,不如直接强制删除。 |
🔒 防止危险代码流入主干 | 某分支包含危险改动或潜在 Bug,为避免 merge 到主分支,立即删除。 |
⚠️ 冲突太多,放弃合并 | 分支与主干差异大、冲突重,重建更清晰,强行删除原分支。 |
双击要切换的分支名字,出现小圆圈为激活状态。
检出分支
“检出(checkout)远程分支” 是指你将某个远程仓库(如 origin)上的分支拿到本地来使用、开发或查看的操作。
本地冲突:
分支2修改:
分支1修改:
合并分支:
产生冲突:
如果分支一修改了1.txt
,分支2修改了1.txt
且修改位置意义,修改内容不同合并时候就会产生冲突。
远程冲突:
本地3.txt
的内容:
远端3.txt
的内容:
修改本地3.txt的内容:
提交推送:
报错:
本地冲突:
方式一:在需要提交的文件里面自己手动保留要更改的内容,然后鼠标右键选择已经解决冲突。
方式二:方式是以我为准激活的分支的内容是我要保留的内容。
方式三:以别人为准就是合并时候保存要合并的那个分支的内容。
远程冲突:
解决冲突再重新推送:
选择从远端仓库中哪个分支获取。
选择要发送到远端仓库的分支,点击推送。
方式一:选择修改的文件,右击选择忽略。
方式二:
忽略指定文件:在 .gitignore
中添加精确文件名,如 lalala.txt
,表示忽略该文件的所有更改。
忽略特定类型的文件:使用通配符后缀,如 *.md
表示忽略所有 .md
结尾的文件。
忽略特定文件夹:使用路径方式,如 /name
表示忽略项目根目录下的 name
文件夹及其所有内容。
停止跟踪的作用是让 Git 不再对某个已经被版本控制的文件或文件夹进行管理,这意味着即使你之后对该文件进行了修改、重命名或删除,Git 也不会再将这些更改记录到提交中。
本地文件停止跟踪:
方式一:选择要停止跟踪的文件,然后右击鼠标,选择停止跟踪。
方式二:没有更改需要停止跟踪的文件,选择停止跟踪。
停止跟踪远程分支:
SourceTree
中,**选择你要导出补丁的提交SourceTree
会导出为 .patch
文件在分支创建补丁的意义
目的 | 原因和优势 |
---|---|
1. 避免污染主分支 | 主分支(如 master 、main )通常要保持稳定、可发布。在新建分支上做补丁开发,不会影响主线。 |
2. 更容易管理改动 | 分支相当于“一个封闭的变更沙箱”,方便组织、测试和提交改动。 |
3. 方便团队协作 | 提交到分支后,其他开发者可以基于该分支拉取代码、做代码审查(Review)或测试。 |
4. 创建补丁文件 | 使用 git format-patch 可以导出成 .patch 文件供邮件发送、打包发布或代码审计。 |
选择补丁的位置选择补丁,点击应用。
1. 分支上的 1.txt
内容与补丁内容完全一致
2. 分支上的 1.txt
是空文件
3. 分支上的 1.txt
内容与补丁内容部分一致
4. 分支中没有 1.txt
文件
1.txt
并写入补丁内容;如果补丁只修改文件而文件不存在,则应用失败报错。贮藏的典型用途:
贮藏操作会将你当前工作区和暂存区的改动(包括新增、修改、删除的文件)保存到一个栈中,同时将工作目录恢复到干净状态,就像没有修改过一样。这使你能够 快速切换分支、拉取最新代码或进行其他操作,而不必担心未完成的改动被提交或丢失。
丢弃 指的是放弃当前工作目录或暂存区中的修改,将文件恢复到最后一次提交的状态。也就是说,丢弃操作会撤销你对文件所做的所有未提交更改,使文件内容回到仓库中最新提交的版本。
(直接删除工作区的文件)
标识版本:标签常用来标记软件的版本号,如 v1.0.0
、v2.1.3
,方便团队成员和用户明确某次发布对应的代码状态。
便于回溯:通过标签可以快速跳转到对应提交,便于查阅、回滚或打包特定版本代码。
不可变标记:与分支不同,标签是固定的引用,不会随后续提交移动,保证历史版本的稳定性。
支持轻量标签和附注标签:轻量标签只是简单指向提交的指针,附注标签则包含作者信息、日期和描述,适合用于发布说明。
单击标签,切换到标签的节点所在位置。双击标签可以切换到标签节点的内容。
双击标签可以切换到标签节点的内容。