美文网首页程序员工具
Git学习笔记2-分支管理

Git学习笔记2-分支管理

作者: 春风十里_不如睡你 | 来源:发表于2017-10-14 15:35 被阅读0次

一、原理

在Git里,初始的分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。



当创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上。



从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变。

假如在dev上的工作完成了,就可以把dev合并到master上,就是直接把master指向dev的当前提交,就完成了合并。



合并完分支后,甚至可以删除dev分支,删除dev分支就是把dev指针给删掉。

二、相关命令

  • 创建分支
 git checkout -b dev
  • 查看当前分支
git branch
  • 切换分支
git checkout master
  • 合并分支
git merge dev
  • 删除分支
git branch -d dev

三、解决冲突

当两个分支各自都分别有新的提交,变成了这样,这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突。



查看冲突的文件

git status

Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们需要手动解决冲突,修改完成后再提交。

git add file.java
git commit -m "confilct fixed"

现在,两个分支变成了下图所示。



查看分支的合并情况

git log --graph --pretty=oneline --abbrev-commit

四、分支管理策略

  • 合并时创建一个commit
git merge --no-ff -m "merge with no-ff" dev
  • 使用Fast forward模式和不使用Fast forward模式,merge后的对比



  • 分支策略

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
所以,团队合作的分支看起来就像这样:


五、Bug分支

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

  • 保存环境
git stash
  • 查看已保存的环境
git stash list
  • 恢复环境
git stash pop

六、Feature分支

开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

  • 强行删除分支
git branch -D dev

七、多人协作

多人协作的工作模式通常是这样:
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
这就是多人协作的工作模式,一旦熟悉了,就非常简单

  • 查看远程库信息
git remote -v
  • 推送分支
git push origin branch-name
  • 拉取分支
git pull
  • 在本地创建和远程分支对应的分支
git checkout -b branch-name origin/branch-name
  • 建立本地分支和远程分支的关联
git branch --set-upstream-to origin/branch-name branch-name

八、标签管理

  • 创建标签

命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a <tagname> -m "blablabla..."可以指定标签信息;
git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;
命令git tag可以查看所有标签。

  • 操作标签

命令git push origin <tagname>可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d <tagname>可以删除一个本地标签;
命令git push origin :refs/tags/<tagname>可以删除一个远程标签。

相关文章

  • Git学习笔记2-分支管理

    一、原理 在Git里,初始的分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,...

  • 2018-01-28

    git学习笔记 根据廖雪峰老师教程学习整理的常用命令 git版本库创建 文件管理相关 远程库 分支管理 bug修复...

  • 源代码管理-Git

    PPT Xmind 笔记 上课笔记 01-GIT本地操作 02-GIT团队开发操作 03-GIT分支管理(了解) ...

  • Git学习笔记2

    从零开始学习Git,入门网址廖雪峰Git教程。 分支管理 标签管理

  • git常用命令

    分支管理 git 切换分支 git 查看远程分支 git 查看本地分支 git 创建本地分支 git 删除本地分支...

  • Git 笔记(七)分支管理策略和 bug 分支、Feature

    笔记整理自廖老师的 git 教程 分支策略管理 通常我们在合并分支的时候,git 会使用 fast-forward...

  • Git命令整理

    Git命令 ———————————————— git配置: git基本步骤: git分支管理: 创建分支命令: 切...

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

    原文链接:https://zhang35.coding.me/2018-git-7-23.html Git分支原理...

  • Git 学习笔记 (4):分支管理

    4.1 多分支存在的意义 Git 不仅拥有分布式这样优秀的版本控制系统运作方式,而且具有强大的分支管理能力。多分支...

  • Git学习笔记(进阶)——分支管理

    廖雪峰gitGit-分支-分支的新建与合并 创建分支&转换分支 等同于 git checkout xxx转换分支g...

网友评论

    本文标题:Git学习笔记2-分支管理

    本文链接:https://www.haomeiwen.com/subject/ysaxuxtx.html