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 mastermaster为要指定推送的本地分支,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分支了:
相关文章推荐
- Git操作-分支管理(一)
- Git操作——分支管理(一)
- git仓库管理分支误操作 导致文件丢失
- Git分支管理及常见操作
- Git操作-分支管理(二)
- git常用操作和分支管理
- Linux下git操作(三)——分支管理与标签
- git常用操作之分支管理(五)
- git diff 生成patch, git apply patch 打补丁方法说明,以及分支管理的简单操作。
- 版本控制工具(下)——Git的远程仓库、分支管理与其它操作
- 用安卓Studio操作Git项目管理(包括GitHub和GitChina的项目提交和管理)和各种本地远程分支操作
- Git分支管理和远程操作
- Git常用操作 - 分支管理
- Git学习笔记(四)——分支管理和远程操作
- Git分支管理的基本操作
- git diff 生成patch, git apply patch 打补丁方法说明,以及分支管理的简单操作。
- 【GIT-3】GIT 的基础教程 分支管理 fixbug分支 Featur 冲突处理 标签管理 操作
- windows下git的安装、配置与操作(十一)——分支的管理
- Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作
- Git分支管理的基本操作