git创建分支,解决冲突,删除分支后保留分支信息、bug分支

1.git checkout命令加上-b参数表示创建并切换,相当于以下两条命令
在这里插入图片描述
用git branch命令查看当前分支,git branch命令会列出所有分支,当前分支前面会标一个
在这里插入图片描述
现在就可以在dev分支上正常提交,比如修改了test.txt 文件交且把它提交到dev分支上,先将test放到暂存区,然后commit提交
在这里插入图片描述
dev分支的工作完成,我们就可以切换回master分支
在这里插入图片描述 切换回后,发现master分支下的test文件没有改变内容,
现在把dev分支的工作成果合并到master分支上
git merge命令用于合并指定分支到当前分支 ,将dev分支合并到当前master分支上
在这里插入图片描述
合并完成后,就可以放心地删除dev分支了
git branch 是查看所有分支 带
的是当前分支
git branch -d dev 是删除分支的命令
在这里插入图片描述 再查看一下分支,只剩下 master
在这里插入图片描述
创建与合并分支

在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。

下面开始实战。

首先,我们创建dev分支,然后切换到dev分支:

$ git checkout -b dev

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

$ git branch dev
$ git checkout dev

然后,用git branch命令查看当前分支:

$ git branch

  • dev
    master
    git branch命令会列出所有分支,当前分支前面会标一个*号。

然后,我们就可以在dev分支上正常提交,比如对readme.txt做个修改,加上一行:

Creating a new branch is quick.
然后提交:

$ git add readme.txt
$ git commit -m “branch test”
[dev b17d20e] branch test
1 file changed, 1 insertion(+)
现在,dev分支的工作完成,我们就可以切换回master分支:

$ git checkout master

切换回master分支后,再查看一个readme.txt文件,刚才添加的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变:

现在,我们把dev分支的工作成果合并到master分支上:

$ git merge dev
Updating d46f35e…b17d20e
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。

注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。

当然,也不是每次合并都能Fast-forward,我们后面会讲其他方式的合并。

合并完成后,就可以放心地删除dev分支了:

$ git branch -d dev

删除后,查看branch,就只剩下master分支了:

$ git branch

  • master
    因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

小结
Git鼓励大量使用分支:

查看分支:git branch

创建分支:git branch

切换分支:git checkout

创建+切换分支:git checkout -b

合并某分支到当前分支:git merge

删除分支:git branch -d

二、解决冲突
1.先创建个新的分支feature1
在这里插入图片描述
2.修改test文件最后一行
在这里插入图片描述
在feature1分支上提交
在这里插入图片描述
然后切换到master,在master分支上修改内容并且提交到master上
在这里插入图片描述
种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突
在这里插入图片描述test.txt文件存在冲突,必须手动解决冲突后再提交,直接看到冲突的内容
在这里插入图片描述
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交

三、删除分支后保留分支信息
–no-ff参数,表示禁用Fast forward(这种模式下,删除分支后,会丢掉分支信息)
在这里插入图片描述
合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并
四、bug分支,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除
当工作到一半还没办法提交时,可以储藏起来,等bug修复后继续工作,Git提供了一个stash功能
在这里插入图片描述
已将刚才修改的dev2 changes 储藏起来了在这里插入图片描述
然后确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支 ,创建一个bug分支 issue-101 ,然后修复bug ,需要把 dev changes 改为 master change dev bug,然后提交
在这里插入图片描述
在这里插入图片描述
修复bug完成后,切换到master分支,并完成合并,最后删除issue-101分支 (git branch -d name)
在这里插入图片描述
现在接着回到dev分支干活了 ,工作区是干净的
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190108112346877.png
用git stash list命令查看工作场所,刚才的内容还在
在这里插入图片描述
Git把stash内容存在某个地方了,需要恢复一下,有两个命令:git stash apply,恢复后,stash内容并不删除,需要用git stash drop来删除,另一种方式是用git stash pop,恢复的同时把stash内容也删了 ,再使用git stash list 就看不到任何内容
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值