码迷,mamicode.com
首页 > 其他好文 > 详细

Git操作-分支管理(三)

时间:2015-05-03 19:04:16      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:git   添加远程分支   删除远程分支   bug分支   

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分支了:

技术分享

Git操作-分支管理(三)

标签:git   添加远程分支   删除远程分支   bug分支   

原文地址:http://blog.csdn.net/changjiangbuxi/article/details/45460485

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!