git基础(四)

本文深入探讨了Git分支管理,重点关注了无法删除分支的情况及两种合并策略:Fast-forward和--no-ff。通过实验解析,帮助理解Git分支操作的关键概念。
摘要由CSDN通过智能技术生成

分支 branch( 非常重要 )

概念: 分支是由多个commit链条按照一定的顺序组成的链 / 一条工作记录线
	  commit 一个版本(每个版本都唯一的sha1)
注意:
	1.git仓库初始化了就有master分支 ,master是主分支(默认分支)
	2.每一个分支必须基于一个commit	
	
有关分支的命令:
	创建分支
	git branch 分支名	
	切换分支 
	git checkout 分支名
	删除分支
	git branch -d 分支名
	查看分支 
	git branch 
		/*
			* master  *代表你当前所在的分支
              dev
			  
		*/
	创建并切换分支	
	git checkout -b 分支名
	
	合并两个分支
	git merge 分支名	

	查看分支当前版本
	git branch -av
实验:不能删除分支的情况(重点)
	1. 不能删除当前分支 
	2. 如果分支包含‘未合并’的内容 不能删除当前分支,
		未合并: 在要删除的分支存在一个新的版本 commit,而且只有当前删除的分支指向于这个版本 
		可以强制 删除 git branch -D dev 
		合并完可以删除
			git merge dev
				/*
					更新 4b4b597..0444a94
					Fast-forward :前进分支分指针由之前的commit 向前走了n步 ,这个向前走的动作,向前合并
					 a.txt | 1 + :0444a94相比于 4b4b597 在a.txt 文件中增加了一行 
					 1 file changed, 1 insertion(+)
				*/
			git branch -d dev
			
	3. 注意两个细节:
		a)如果在分支dev中进行了写(新建文件,删除文件,修改文件)操作 ,但此操作局限在工作区(没有进过add commit)
		在这种情况下,在master分支是可以看到dev分支的写操作的 ,如果 dev 分支对这个写操作执行了add和 commit 
		则master 分支是不能观察到dev这个写操作的 
		
		b)如果在分支dev中进行了写操作 ,但这个写操作仅局限在工作区,
		可以直接删除这个dev分支,原因在master中是可以感知到dev的写操作的 
实验: Fast-forward
		场景:dev分支领先master 两个commit,master落后dev 两个commit
		git merge dev	// 在master分支上合并dev
			merge dev (默认按照 Fast-forward方式合并) 
			merge --no-ff dev (使用 --no-ff方式合并)
			/*
				更新 ff6eefd..9a5d8f0
				Fast-forward
				 a.txt | 3 +++
				 1 file changed, 3 insertions(+)
			*/
		 注意:
			1. 合并后也会保留中间的commit
			2. git merge 合并后 两个分支归于同一个commit
			3. Fast-forward合并方式丢失分支信息
				git log --graph
				git log --graph --pretty=oneline --abbrev-commit
实验 :–no-ff 合并方式
	场景:dev分支领先master 两个commit,master落后dev 两个commit
		git merge --no-ff dev
			/*
				Merge made by the 'recursive' strategy.
				 a.txt | 2 ++
				 1 file changed, 2 insertions(+)
			*/
		   
		注意:
			1.no-ff和并完后,主动发起合并的分支会领先于被合并的分支一个commit版本
			2.no-ff 不会丢失分支信息
			3.被合并的分支也要进行fast-forward前进一步 ,两个分支指向于同一个commit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值