Git操作-分支管理(三)

本文介绍如何利用Git的stash功能在开发过程中保存工作现场,以便在修复bug时不受干扰。同时,阐述了如何在多人协作环境中进行分支管理,包括创建、合并、删除分支的步骤,以及如何在不同分支间进行有效同步。此外,提供了在远程仓库上推送和抓取分支的方法,以及删除未合并分支的操作指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bug分支

情境:当你在开发的过程中突然要修复一个被提出的bug,但是现在你当前分支上的工作还没有提交,但是工作还没完成,没法提交,而又急于修改这个bug

方法:Git提供了一个stash功能,命令:git stash,可以把当前工作现场(当前分支的工作)“储藏”起来,等以后恢复现场后继续工作。。 这样工作区就是干净的了
接着,首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支,在这个临时分支上修复bug,修复完成提交后切换到master分支,并完成合并,最后删除临时分支。。

最后还是要切换到当初工作的分支上去,但是因为当初git stash隐藏了工作,现在这个分支下的工作区是干净的,当初的工作现场到哪里了,可以用命令:git stash list 查看之前的工作现场,下面就是要恢复工作现场,用命令:git stash apply,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

还有一种方式就是git stash pop可以直接代替git stash listgit stash apply,表示恢复的同时把stash内容也删除了。

此时再用git stash list查看,就看不到任何stash内容了。

注意:也可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:git stash apply stash@{0}

所以,修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

删除未合并的分支

场景:当创建一个分支,并在这个分支上修改了一部分东西已经提交,但是现在又不要修改这部分东西了,并且要删除这个分支,但是如果直接用命令git branch -d name将会删除失败,提示分支还没有被合并,如果删除,将丢失掉修改,如果要强行删除,需要使用命令git branch -D name

方法:强行删除,git branch -D name,,OK,删除成功。

所以,如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。

多人协作的工作模式

场景:假设远程仓库为github上的一个仓库,默认名称是origin(远程仓库的别名),而对这个仓库工作的人有很多人,合并提交如果不按和一定规则模式来,就有可能发生冲突失败

方法:要推送的时候,使用git remote来查看远程库的信息,或者,用git remote -v显示更详细的信息:
这里写图片描述
上面显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址。

推送分支

git push origin master master为要指定推送的本地分支,origin为远程库对应的远程分支,推送也要遵从一定的规则:

master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

如果github上的远程库没有分支feature1,可以直接git push origin feature1把本地上的分支feature1推送到远程仓库。
这里写图片描述
使用命令:git branch -a查看远程仓库的分支:
这里写图片描述

抓取分支

情景一:现在github远程仓库上有一个分支dev,但是本地上没有,需要把远程origin的dev分支到本地

方法:使用命令:git checkout -b dev origin/dev将远程仓库的dev分支抓取到本地上
这里写图片描述

情景二:对同一个分支dev,你在本地上做了修改,还未提交,而此时其他人也对你同样的文件作了修改,并且已经提交到远程仓库dev分支上了,此时你再推送就会推送失败,显示冲突,再用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送,发现git pull也失败了。

方法:git pull的 原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:

$ git branch --set-upstream dev origin/dev
Branch dev set up to track remote branch dev from origin.

然后再git pull,成功!

注意:以后修改推送时,一定要先pull,再push

删除远程分支

情景:现在github上gitTest仓库有远程分支dev,现在要删除它
这里写图片描述

使用命令:git push origin :dev

这里写图片描述

再看github上,已经没有dev分支了:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值