Git学习:(三)分支管理

通过分支管理能够保证不同用户提交的代码尽可能少的发生冲突,提高团队协作的效率。

一、分支的创建与合并

1.创建并切换到new分支。

创建和切换

git checkout -b new
# git checkout命令加上-b表明创建并切换到分支 new,相当于下面两条指令的功能:
git branch new
git checkout new

git checkout 分支名字,可实现不同分支的切换

当前分支的查看:git branch

该命令会列出所有的分支,当前分支前面会标一个*号。
分支创建好之后就可以在当前分支上正常的修改和提交。

2.合并分支

现在将new分支的内容合并到master分支上。

  • 切换到master分支:git checkout master
  • 将new分支合并至master
    git merge new
    Updating 4ebf9d0…2265583
    Fast-forward
    h.txt | 1 +
    1 file changed, 1 insertion(+)

git merge命令用于合并指定分支到当前分支。Fast-forward指的是快速模式,并不是所有的合并都能使用快速模式。(这种模式下,删除分支后,会丢掉分支信息)

  • 合并完成后就可以删除new分支了:git branch -d new
3、禁用fast forward模式合并分支

通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

git merge --no-ff -m "merge and no-ff" new

二、bug的修复与合并

当我们在new分支开发的时候,可能主分支会有bug需要处理,这时候需要将当前工作区清空再切换到主分支解决bug,解决完bug回来再继续工作。这时候可以使用以下指令保存当前分支的工作区:

git stash

然后取解决bug,bug解决了回到new分支使用git stash list查询已经保存的工作现场,之后使用git stash apply stash@{版本号} 恢复指定版本的stash。但是使用git stash apply 方式一般还需要使用git stash drop来删除已恢复的版本。
另一种方式是使用git stash pop,恢复的同时把stash内容也删了。


但是有个问题,我们将master上的bug修复了,但此bug在new分支中依然存在。这时候我们可以在new分支中使用git cherry-pick 版本号 ,版本号指的是修改bug时提交的版本。这样就不必在new分支上再改一遍相同的bug了。有可能会出现冲突,但冲突的地方会标记清楚的,我们可以选择哪些保留,哪些丢弃。


分支的强行删除:git branch -D 分支名

三、本地分支推送到远程分支

本地的分支如果不推送到远程,其他人是无法看见的。从本地推送分支,使用git push origin branch_name;如果推送失败,先用git pull抓取远程的新提交,合并后解决冲突,然后提交。


分支推送,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

git push origin branch_name
推送失败的解决办法
  • 1.如果推送失败,可能是该分支在远程上领先于本地分支。
  • 2.在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致。
  • 3.建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
  • 4.使用git pull将最新的提交从分支抓下来,如果有冲突,要先处理冲突。然后,在本地合并,解决冲突后再推送到远程。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是少年呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值