Git操作-分支管理(三)

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 [email protected]{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分支了:

时间: 2024-10-20 14:20:43

Git操作-分支管理(三)的相关文章

Git操作-分支管理(二)

解决冲突 场景:创建一个新的分支feature1,然后在README.txt文件里添加4 create a branch named feature1,然后在feature1分支上提交.提交后切换到master分支,再在master分支上将最后一行修改为create a new branch named feature1,再提交,现在,master分支和feature1分支各自都分别有新的提交: 此时结构图是这样的: 在这种情况下,我们尝试把两个分支合并,git merge feature1:

Git操作-分支管理(一)

分支介绍 多个分支就是在版本库中有多条提交的记录线条,如下图所示,蓝色的master是一个分支,红色的dev也是一个分支,HEAD所指的是当前的分支: 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了.如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险. 现在有了分支,就不用怕了.你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活

Git 学习笔记<分支管理> (三)

分支是什么? 分支就像树分出的树枝,不同的是,它们之间可以互相合并. 将版本的推进想象成一个链表的伸长:  version 1.0 ==> version 2.0 ==>version3.0  . master是主要的分支基本上用于发布产品.你可以从master分出一个dev,在上面创建新功能,或者修bug然后调试.最后再合并到master里面.就像下面这样. master分支:  version 1.0=========>version 2.0===... \            

git 实现分支管理项目,是羡慕管理更高效;

利用git 的分支管理的能力实现更有章法的协同开发的模式: 其实在我们进行 git init 时就创建了 master 的主分支: 那现在我如何建立第二个分支呢? :git branch local 初始时分支的内容是完全和主分支是一样的,在分支中所有的操作都不影响主分支里的情况,你可以在其中做任何修改: 如何查看分支呢? :git branch local * master 星号是表示当前所在的分支:其实两个分支一模一样,只是大家都是把master当作主分支的: 如何切换分支呢? :git c

git远程分支管理

git远程分支管理 使用分支的原则 master分支是非常重要的,线上发布代码用这个分支,平时我们开发代码不要在这个分支上 创建一个dev分支,专门用作开发,只有当发布到线上之前,才会把dev分支合并到master 开发人员应该在dev的基础上再分支成个人分支,个人分支里面开发代码,然后合并到dev分支 远程分支管理 在远程GitHub上创建dev分支 克隆远程GitHub仓库(只会克隆 apeng仓库中的master分支) [[email protected] ~]# mkdir /remot

Git 之三 分支管理

写在前面   Git 的官网上有很详细的使用教程(当然有翻译版本),具体地址是 https://git-scm.com/book/zh/v2.唯一不足就是,很多讲解并没有实机演示.但是,毫无疑问,官网资料是最全面的!如果有任何疑问,可以去官网看看! 分支   使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线. Git 的一大特点就是对于分支的支持!Git 的分支可谓是难以置信的轻量级,它的新建操作几乎可以在瞬间完成,并且在不同分支间切换起来也差不多一样快. 远程分支   在了

[git]git的分支管理

最近在折腾git,有感于git这个强大而好用的版本管理工具. 说说git分支管理的心得体会. 首先,要有个master主分支: Git主分支的名字,默认叫做Master.它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发. Git 的 “master” 分支并不是一个特殊分支. 它就跟其它分支完全没有区别. 之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它,并且大多数人都懒得去改动它. 日常开发中,要用到另外一个分支,就是Dev分支,主要用来开发,

Git的分支管理(二)

分支管理策略 git 在合并(merge)的时候有两种方式,一种是Fast forward模式,这种方式是快速模式,删除分支后,会丢掉分支信息. 另外一种是--no-ff方式(禁止Fast forward模式),Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息. Fast forward模式: $ git merge dev --no-ff方式: $ git merge --no-ff -m "merge with no-ff" dev 因为本次合

[Git]3_分支管理

目录 创建与合并分支 解决冲突 分支管理策略 不使用Fast forward模式 分支策略 Bug分支 Feature分支 学习资源来自廖雪峰的Git教程 本文简短记忆学习内容,主要是使用命令,方便以后查看,完整学习请查看廖雪峰Git教程 操作过程在Ubuntu18.04完成,其他平台没有尝试 创建与合并分支 创建branch $ git branch <branch name> 切换branch $ git checkout dev 上面两步也可以通过下面一步来完成 $ git checko