Git分支(本地)
Git 分支 本地
2023-09-11 14:17:56 时间
1、Git保存的不是文件的差异或者变化量,而只是一系列文件快照(File Snapshot);
2、暂存操作会对每一个文件计算校验和(SHA-1哈希字符串),然后把当前版本的文件快照保存到Git仓库中(Git使用blob类型的对象来存储这些快照),并将校验和加入到暂存区;
3、Git中分支,其实本质上是个指向Commit对象的可变指针。Git会使用master最为默认的分支名称。在若干次提交后,你其实已经有了一个指向最后一次提交对象的master分支,它在每次提交时都会自动向前移动;
4、Git是如何知道当前在哪个分支上工作的呢?答案很简单:它保存着一个名叫HEAD的特别指针(HEAD指针是一个指向你正在工作中的本地分支的指针);
5、运行git branch命令仅仅是创建了一个新的分支,但不会自动切换到这个分支中去;
6、git checkout master命令做了2件事:
6.1、把HEAD指针指向master分支;
6.2、把工作目录中的文件替换成master分支所指向的快照内容。
7、Git中的分支实际上仅是一个包含所指对象校验和(40个字符长度SHA-1字符串)的文件,所以创建和销毁一个分支就变得十分廉价;
8、对于HotFix采取如下的流程来处理:
8.1、返回原先已经发布到生产服务器上的分支;
8.2、为这次紧急修补建立一个新分支,并在其中修复问题;
8.3、通过测试后,回到生产服务器所在的分支,将修补分支合并进来,然后再推送到生产服务器上;
8.4、切换到之前实现新需求的分支,继续工作。
9、对于2个分支没有直接的祖先对象,按如下方式进行合并:
9.1、Git没有简单地将指针向右移动;
9.2、将三方(比如:C4、C5、C2)合并后的结果重新做一个新的快照,并自动创建一个指向它的提交对象(比如为:C6),这样提交对象(C6)比较特殊,它有两个祖先(C4和C5);
10、查看各个分支最后一个提交对象的信息,运行:git branch -v
11、查看已于当前分支合并的分支,运行:git branch --merged
12、查看未与当前分支合并的分支,运行:git branch --no-merged
13、特性(Topic)分支:一个短期的用来实现单一特性或与其相关工作的分支,在Git中,一天之内建立、使用、合并再删除多个分支是常见的事;
相关文章
- git克隆某个分支到本地指定的目录中
- git checkout -b 本地分支 origin/远程分支
- git如何删除远端不存在的本地分支?
- git如何将当前仓库的远程分支推到一个新的仓库中?
- git重命名分支名
- git 分支( branch ) 的基本使用
- Git应用—03分支管理和冲突解决(转载)
- Git本地分支和远程分支关联
- 【Git 问题及解决方案】git clone 含有子模块的项目
- Mac上Source Tree识别URL为无效git仓库问题
- git本地分支覆盖master
- git 中文路径乱码处理
- Git for Windows之分支管理、分支合并、解决分支冲突
- git 入门(创建与合并分支、解决冲突、分支策略、bug分支)
- git将某远程分支的某次提交合并到另一远程分支