Git分支管理

分支管理

创捷和合并分支

自己创建属于自己的分支,别人看不到,继续在原来的分支上正常工作,而自己在自己的分支上干活,想提交就提交,等到开发完毕后,再一次性合并到原来的分支上,这样既安全,又不影响比别人工作。

Git的分支无论是创建、切换还是删除,都能在一秒内完成,十分高效。

创建并切换分支

git checkout dev  //创建名为dev的分支
git checkout dev  //切换到dev分支

git checkout -b dev  //创建并切换到dev分支,作用同上面两条

查看当前分支

git branch  //默认为master即main分支

在这里插入图片描述

查看所有分支

git branch -a

查看远程分支

git branch -r

在这里插入图片描述

切回master分支

git checkout master

dev分支的工作结果合并到master分支上

git merge dev

删除dev分支

git branch -d dev

switch命令也可操作分支

git switch -c dev  //创建并切换到新的分支dev

git switch master  //切换分支为master

解决冲突

当其main分支和其他分支都有了各自新的提交时,这种情况下Git无法合并,因为可能发生冲突:

在这里插入图片描述

合并时会产生冲突提示:

在这里插入图片描述

产生冲突的文件内容里也会有一些提示:

在这里插入图片描述

更改文件内容消除分支后再提交,此时冲突被消除:

在这里插入图片描述

使用git log可以查看分支的合并情况:

git log --graph  //查看分支合并图
git log --graph --pretty=oneline  //简写内容
git log --graph --pretty=oneline --abbrev-commit  //简写提交

在这里插入图片描述

最后可以删除分支了

git branch -d branch1

在这里插入图片描述

分支管理策略

通常,合并分支时默认为Fast forward模式,但这种模式在删除分支后会丢失分支信息。在强制禁用该模式时,Git会在合并时生成一个新的commit,即存了一份当前分支状态,这样,从历史中就能找到分支信息。

合并分支时强制禁用Fast forward模式:

git merge --no-ff -m "xxx" dev

禁用ff后的分支状态:

在这里插入图片描述

main分支应该是最稳定的,仅用来发布新版本,平时不会直接在该分支上面干活。所有每个人都应该在自己独有的分支上干活,有成果时再合并到main分支上去。因为团队合作下的分支结构应该如此:

在这里插入图片描述

Bug分支

当主分支上出现紧急bug需要修复,但你正在操作的分支上又有任务还在进行需要暂存工作现场时,使用:

git stash

存储当前工作现场后即可切到其他分支干活了,完事后,恢复刚刚的工作现场:

git stash list  //显示工作现场的列表

git stash apply  //恢复工作现场
git stash drop  //删除存储的工作现场

git stash pop  //恢复工作现场并删除该存储

git stash apply stash@{1}  //恢复到指定的stash

复制某个特定的提交到当前分支:

git cherry-pick xxxxx  //只变更某个commit id的commit

强制删除某个分支

git branch -D dev

多人协作

查看远程库的信息:

git remote
git remote -v  //显示更详细的信息

在这里插入图片描述

推送分支,即提交本地的某分支到远程库对应的远程分支上:

git push origin dev

其他人克隆远程库

git clone https://github.com/username/xxx.git

默认情况下其他人只能看到本地的main分支,如果需要在dev分支上开发就需要在本地创建远程origindev分支,本地创建该分支后即可push

当你试图在某分支上进行推送时,但你的提交与其他人的已提交产生了冲突,则会导致推送失败。那么你需要先git pull将远程的最新提交的抓下来,然后在本地合并,等解决了冲突后再进行推送。

若无法git pull,则需要指定本地分支与远程分支的链接:

git branch --set-upsteam-to=origin/dev dev
git rebase

可以将本地未push的分叉提交整理为直线。目的是使得我们再查看历史提交时变化时更更容易,因为分叉的提交需要三方对比。

git merge与git rebase参考:

https://blog.csdn.net/michaelshare/article/details/79108233

内容参考-https://www.liaoxuefeng.com/wiki/896043488029600

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值