💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
项目/仓库/版本库 初始仓库有一个名为 master 的默认分支 HEAD是一个指向当前正在工作的分支的指针 git版本控制系统 github仓库托管服务,并集成开发社区 本地仓库 远程仓库 本地仓库 工作目录(取决于仓库的当前正在工作的分支) .git文件夹(git版本控制系统) 暂存区 每次提交,都会保存一份分支提交点的分支快照,以便在将来能够回到任意一次分支提交点上。 这个快照是分支文件的快照,而不是保存的差异,这采取的是一种以空间换时间的做法,理论上可以将仓库看成是有0到11111……的过程,而每次改变就是差异的累加,所以保存差异也就能够得到任意一次提交点了,但是这样复杂度过高,不利于维护,所以不采用这种方案。 提交: 1. 暂存区的差异一并提交到对应的版本库分支,每次提交生成一个标示本次提交的哈希值,这个哈希是“分布式计算的”所以能保证多机不会重复,并且这个哈希只取前几位(一般5~6位)都能取到,相当于可以简写吧。 2. 每次提交也会保存一份当前分支的文件快照(上面已经提到过) 3. 提交后,对应分支HEAD更新,向前推动一步。 4. 每次会将 -m 提交说明“更新到对应的全部差异文件中”(相当于解释这次为什么提交,以及此次提交时哪些变化发生了变化,文件夹也有这个提交描述,说明文件夹也被当文件对待了),需要注意的是,这个提交描述是与提交是对应的,也就是这个描述是指向提交的。 合并是一种同步 克隆也是一种“同步” pull也是一种“同步”(其实也是一种合并) (合并可能有多种合并方式,不同的合并方式产生不同结果,比如“均等合并”,“合并生成新分支”??????) 合并这个同步会使双方产生一个相同的“标记因子” 此后的每次提交都会试“标记因子”发生改变 当双方合并时发现双方的“标记因子”都已发生改变,都不是最初的,即后来都做过提交的话 那么就不能进行“快速合并”了,只能通过手动处理后在进行手动合并了。 合并后,双方的“标记因子”又一致了。 此后,循环往复此过程。 现在可是看出来了,“标记因子”其实就是提交哈希(分布式算法,保证不会重复) 对于每个分支的每个提交,哈希值都是唯一的。 实际上合并产生的一个相同的“标记因子”其实就是“一次合并提交”产生的一个相同的提交哈希。此时也认为两个分支是“相等(此刻文件上是相等的)”的。 要搞明白提交点,工作区未提交的到暂存区的修改,暂存区与分支,提交的关系,工作区是每个提交,每个分支独立的还是怎么处理的,必须把概念弄清楚,才能保证工作的可靠性。保证平时代码维护的工作。 git reset --hard ---- 请在准备切换版本前检查当前工作状态,否则切换后将会丢失当前工作内容(当前工作区为提交到暂存区的修改,和当前暂存区),请谨慎使用会导致丢失当前工作内从的操作,否则后果自负!同时经常使用git status 检查当前工作状态也是好的习惯。(提示,关闭电脑,退出git bash不会影响工作内容,下次开始还能接着工作) git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。 “[再用git status查看一下,现在暂存区是干净的,工作区有修改](http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374831943254ee90db11b13d4ba9a73b9047f4fb968d000)”上面可能有点说错了或表述有偏差。 **只有当工作状态是干净的,即工作区是干净的,暂存区也是干净的,才能说明当前工作完成了(当前工作目录和当前版本库文件一致),否则没完成工作,后果自负哦。** >[info] git跟踪文件,应该是计算文件的哈希Hash的,当多次修改文件,但是文件内容最终没有变化时,git不会认为该文件发生了修改,所以git是跟踪文件内容的。这注意到这点,像Windows的记事本和Sublime Text则不是这样的,只要编辑了文件,那么输入一个字符,又马上删除了,文件内容没有发生改变,对编辑器来说,也认为你做了修改,如果你没有Ctrl+S保存关闭文件的则会提示你有未保存的修改,你必须先保存或者放弃更改才能关闭。(看云网页版的这个文档编辑器跟git差不多,就像是input change事件) [这才是真正的Git——Git内部原理揭秘!](https://mp.weixin.qq.com/s/UQKrAR3zsdTRz8nFiLk2uQ) [Tech Talk\_ Linus Torvalds on git](https://m.youku.com/video/id_XNTIxMjg3MzA0.html?spm=a1z3jc.11711052.0.0&isextonly=1&source=&ishttps=1)