您的位置:首页 > 其它

Git操作-分支管理(三)

2015-05-03 18:42 267 查看

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 list
git 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的地址。

[b]推送分支:[/b]

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

master分支是主分支,因此要时刻与远程同步;

dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

如果github上的远程库没有分支feature1,可以直接
git push origin feature1
把本地上的分支feature1推送到远程仓库。



使用命令:
git branch -a
查看远程仓库的分支:



[b]抓取分支:[/b]

情景一:现在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

[b]删除远程分支[/b]

情景:现在github上gitTest仓库有远程分支dev,现在要删除它



使用命令:
git push origin :dev




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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息