文章目录

  • 一、前言
  • 二、Git分支
    • 2.1什么是分支?
    • 2.2 分支有什么用?

一、前言

  • 参考安装Git 详细安装教程
  • 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多
  • 参考视频『Git』知道这些就够了_哔哩哔哩_bilibili,这个精华多,推荐看这个
  • 参考视频7小时学会Git 基础全套完整教程(从入门到精通)_哔哩哔哩_bilibili,这个虽然长,但是他偏实践,对小白友好,特别有意思
  • 附一个Git动画学习网站
  • Git教程 - 廖雪峰的官方网站 (liaoxuefeng.com)

讲讲小张的感受:我没有接触过Git,所以看了很多视频,对于入门使用确实只要知道git clone,git add,git commit,git push,git merge ,确实也就足够了。但是我很好奇背后的原理,为什么要用git add到暂存区而不是直接git commit?很多指令之间为什么要按一定的顺序执行?所以这个系列我以初学的时候,小白的角度从安装到工作原理(有的是我自己的见解,如果感觉不对,欢迎指正),再到实际应用!另外,推荐看一遍第三个参考视频,然后看一下第四个参考视频,对工作原理的讲解和实际应用确实不错!

二、Git分支

2.1什么是分支?

在Gitee仓库界面有一个分支按钮

分支就好比把D:\项目A\master复制到了D:\项目A\dev,在“dev"中继续工作

新的分支会继承master分支的提交记录,但是新分支里的提交记录不会被master所记录

#mermaid-svg-XFQih5y1i0PPIHa2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-XFQih5y1i0PPIHa2 .error-icon{fill:#552222;}#mermaid-svg-XFQih5y1i0PPIHa2 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-XFQih5y1i0PPIHa2 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-XFQih5y1i0PPIHa2 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-XFQih5y1i0PPIHa2 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-XFQih5y1i0PPIHa2 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-XFQih5y1i0PPIHa2 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-XFQih5y1i0PPIHa2 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-XFQih5y1i0PPIHa2 .marker.cross{stroke:#333333;}#mermaid-svg-XFQih5y1i0PPIHa2 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-XFQih5y1i0PPIHa2 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-XFQih5y1i0PPIHa2 .cluster-label text{fill:#333;}#mermaid-svg-XFQih5y1i0PPIHa2 .cluster-label span{color:#333;}#mermaid-svg-XFQih5y1i0PPIHa2 .label text,#mermaid-svg-XFQih5y1i0PPIHa2 span{fill:#333;color:#333;}#mermaid-svg-XFQih5y1i0PPIHa2 .node rect,#mermaid-svg-XFQih5y1i0PPIHa2 .node circle,#mermaid-svg-XFQih5y1i0PPIHa2 .node ellipse,#mermaid-svg-XFQih5y1i0PPIHa2 .node polygon,#mermaid-svg-XFQih5y1i0PPIHa2 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-XFQih5y1i0PPIHa2 .node .label{text-align:center;}#mermaid-svg-XFQih5y1i0PPIHa2 .node.clickable{cursor:pointer;}#mermaid-svg-XFQih5y1i0PPIHa2 .arrowheadPath{fill:#333333;}#mermaid-svg-XFQih5y1i0PPIHa2 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-XFQih5y1i0PPIHa2 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-XFQih5y1i0PPIHa2 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-XFQih5y1i0PPIHa2 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-XFQih5y1i0PPIHa2 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-XFQih5y1i0PPIHa2 .cluster text{fill:#333;}#mermaid-svg-XFQih5y1i0PPIHa2 .cluster span{color:#333;}#mermaid-svg-XFQih5y1i0PPIHa2 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-XFQih5y1i0PPIHa2 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

master
A
B
C
#mermaid-svg-Joxsm3NKjySg0IBa {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Joxsm3NKjySg0IBa .error-icon{fill:#552222;}#mermaid-svg-Joxsm3NKjySg0IBa .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Joxsm3NKjySg0IBa .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-Joxsm3NKjySg0IBa .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Joxsm3NKjySg0IBa .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Joxsm3NKjySg0IBa .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Joxsm3NKjySg0IBa .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Joxsm3NKjySg0IBa .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Joxsm3NKjySg0IBa .marker.cross{stroke:#333333;}#mermaid-svg-Joxsm3NKjySg0IBa svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Joxsm3NKjySg0IBa .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Joxsm3NKjySg0IBa .cluster-label text{fill:#333;}#mermaid-svg-Joxsm3NKjySg0IBa .cluster-label span{color:#333;}#mermaid-svg-Joxsm3NKjySg0IBa .label text,#mermaid-svg-Joxsm3NKjySg0IBa span{fill:#333;color:#333;}#mermaid-svg-Joxsm3NKjySg0IBa .node rect,#mermaid-svg-Joxsm3NKjySg0IBa .node circle,#mermaid-svg-Joxsm3NKjySg0IBa .node ellipse,#mermaid-svg-Joxsm3NKjySg0IBa .node polygon,#mermaid-svg-Joxsm3NKjySg0IBa .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Joxsm3NKjySg0IBa .node .label{text-align:center;}#mermaid-svg-Joxsm3NKjySg0IBa .node.clickable{cursor:pointer;}#mermaid-svg-Joxsm3NKjySg0IBa .arrowheadPath{fill:#333333;}#mermaid-svg-Joxsm3NKjySg0IBa .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Joxsm3NKjySg0IBa .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Joxsm3NKjySg0IBa .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-Joxsm3NKjySg0IBa .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-Joxsm3NKjySg0IBa .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Joxsm3NKjySg0IBa .cluster text{fill:#333;}#mermaid-svg-Joxsm3NKjySg0IBa .cluster span{color:#333;}#mermaid-svg-Joxsm3NKjySg0IBa div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Joxsm3NKjySg0IBa :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

1.0
A
B
C
D
E

eg:新建1.0文本提交一次,新建2.0文本提交一次

新建一个分支新分支,在新分支新建一个3.0文本提交一次

查看日志,有三次提交记录

切换到master分支,只有两条记录

2.2 分支有什么用?

1.团队开发

master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。

开发不同的功能也可以为每一个 功能/小组 分一个新分支。合作完成后,将每一个分支合并到master

如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法是我们可以修改冲突文件后重新提交!选择要保留他的代码还是你的代码!之后会在git merge讲解决冲突,这里理解什么是分支?

2.个人开发

利用分支,可以将稳定的版本保留在master分支中,开发时新建一个分支dev,每一次改动完之后,将新分支dev合并到master中。

另一种是在开发功能时,dev分支出现了bug,可以从dev分支再切换一个新的分支fixbug,处理完bug将fixbug合并到dev

eg:1.master有一个功能A

#mermaid-svg-k6fTvwN4HM7bp1kT {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-k6fTvwN4HM7bp1kT .error-icon{fill:#552222;}#mermaid-svg-k6fTvwN4HM7bp1kT .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-k6fTvwN4HM7bp1kT .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-k6fTvwN4HM7bp1kT .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-k6fTvwN4HM7bp1kT .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-k6fTvwN4HM7bp1kT .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-k6fTvwN4HM7bp1kT .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-k6fTvwN4HM7bp1kT .marker{fill:#333333;stroke:#333333;}#mermaid-svg-k6fTvwN4HM7bp1kT .marker.cross{stroke:#333333;}#mermaid-svg-k6fTvwN4HM7bp1kT svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-k6fTvwN4HM7bp1kT .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-k6fTvwN4HM7bp1kT .cluster-label text{fill:#333;}#mermaid-svg-k6fTvwN4HM7bp1kT .cluster-label span{color:#333;}#mermaid-svg-k6fTvwN4HM7bp1kT .label text,#mermaid-svg-k6fTvwN4HM7bp1kT span{fill:#333;color:#333;}#mermaid-svg-k6fTvwN4HM7bp1kT .node rect,#mermaid-svg-k6fTvwN4HM7bp1kT .node circle,#mermaid-svg-k6fTvwN4HM7bp1kT .node ellipse,#mermaid-svg-k6fTvwN4HM7bp1kT .node polygon,#mermaid-svg-k6fTvwN4HM7bp1kT .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-k6fTvwN4HM7bp1kT .node .label{text-align:center;}#mermaid-svg-k6fTvwN4HM7bp1kT .node.clickable{cursor:pointer;}#mermaid-svg-k6fTvwN4HM7bp1kT .arrowheadPath{fill:#333333;}#mermaid-svg-k6fTvwN4HM7bp1kT .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-k6fTvwN4HM7bp1kT .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-k6fTvwN4HM7bp1kT .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-k6fTvwN4HM7bp1kT .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-k6fTvwN4HM7bp1kT .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-k6fTvwN4HM7bp1kT .cluster text{fill:#333;}#mermaid-svg-k6fTvwN4HM7bp1kT .cluster span{color:#333;}#mermaid-svg-k6fTvwN4HM7bp1kT div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-k6fTvwN4HM7bp1kT :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

master
功能A

2.现在开发新的功能,从master切一个dev分支,dev分支会继承master分支,开发完后dev分支如图

#mermaid-svg-vLYx7s82NUYapOjf {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-vLYx7s82NUYapOjf .error-icon{fill:#552222;}#mermaid-svg-vLYx7s82NUYapOjf .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-vLYx7s82NUYapOjf .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-vLYx7s82NUYapOjf .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-vLYx7s82NUYapOjf .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-vLYx7s82NUYapOjf .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-vLYx7s82NUYapOjf .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-vLYx7s82NUYapOjf .marker{fill:#333333;stroke:#333333;}#mermaid-svg-vLYx7s82NUYapOjf .marker.cross{stroke:#333333;}#mermaid-svg-vLYx7s82NUYapOjf svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-vLYx7s82NUYapOjf .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-vLYx7s82NUYapOjf .cluster-label text{fill:#333;}#mermaid-svg-vLYx7s82NUYapOjf .cluster-label span{color:#333;}#mermaid-svg-vLYx7s82NUYapOjf .label text,#mermaid-svg-vLYx7s82NUYapOjf span{fill:#333;color:#333;}#mermaid-svg-vLYx7s82NUYapOjf .node rect,#mermaid-svg-vLYx7s82NUYapOjf .node circle,#mermaid-svg-vLYx7s82NUYapOjf .node ellipse,#mermaid-svg-vLYx7s82NUYapOjf .node polygon,#mermaid-svg-vLYx7s82NUYapOjf .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-vLYx7s82NUYapOjf .node .label{text-align:center;}#mermaid-svg-vLYx7s82NUYapOjf .node.clickable{cursor:pointer;}#mermaid-svg-vLYx7s82NUYapOjf .arrowheadPath{fill:#333333;}#mermaid-svg-vLYx7s82NUYapOjf .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-vLYx7s82NUYapOjf .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-vLYx7s82NUYapOjf .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-vLYx7s82NUYapOjf .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-vLYx7s82NUYapOjf .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-vLYx7s82NUYapOjf .cluster text{fill:#333;}#mermaid-svg-vLYx7s82NUYapOjf .cluster span{color:#333;}#mermaid-svg-vLYx7s82NUYapOjf div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-vLYx7s82NUYapOjf :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

dev
功能A
功能B

3.假设master中功能A出现bug,从master分支切一个fixbug分支,fixbug继承master,修复完后,fixbug分支如图

#mermaid-svg-347p3QZDIk4Litds {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-347p3QZDIk4Litds .error-icon{fill:#552222;}#mermaid-svg-347p3QZDIk4Litds .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-347p3QZDIk4Litds .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-347p3QZDIk4Litds .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-347p3QZDIk4Litds .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-347p3QZDIk4Litds .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-347p3QZDIk4Litds .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-347p3QZDIk4Litds .marker{fill:#333333;stroke:#333333;}#mermaid-svg-347p3QZDIk4Litds .marker.cross{stroke:#333333;}#mermaid-svg-347p3QZDIk4Litds svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-347p3QZDIk4Litds .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-347p3QZDIk4Litds .cluster-label text{fill:#333;}#mermaid-svg-347p3QZDIk4Litds .cluster-label span{color:#333;}#mermaid-svg-347p3QZDIk4Litds .label text,#mermaid-svg-347p3QZDIk4Litds span{fill:#333;color:#333;}#mermaid-svg-347p3QZDIk4Litds .node rect,#mermaid-svg-347p3QZDIk4Litds .node circle,#mermaid-svg-347p3QZDIk4Litds .node ellipse,#mermaid-svg-347p3QZDIk4Litds .node polygon,#mermaid-svg-347p3QZDIk4Litds .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-347p3QZDIk4Litds .node .label{text-align:center;}#mermaid-svg-347p3QZDIk4Litds .node.clickable{cursor:pointer;}#mermaid-svg-347p3QZDIk4Litds .arrowheadPath{fill:#333333;}#mermaid-svg-347p3QZDIk4Litds .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-347p3QZDIk4Litds .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-347p3QZDIk4Litds .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-347p3QZDIk4Litds .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-347p3QZDIk4Litds .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-347p3QZDIk4Litds .cluster text{fill:#333;}#mermaid-svg-347p3QZDIk4Litds .cluster span{color:#333;}#mermaid-svg-347p3QZDIk4Litds div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-347p3QZDIk4Litds :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

fixbug
功能A
修复功能A

4.现在切回mastermerge合并分支fixbug(合并后git branch -d fixbug删除多余的分支,忘截图了)

#mermaid-svg-RAVbLlvj7LpNecbF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-RAVbLlvj7LpNecbF .error-icon{fill:#552222;}#mermaid-svg-RAVbLlvj7LpNecbF .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-RAVbLlvj7LpNecbF .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-RAVbLlvj7LpNecbF .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-RAVbLlvj7LpNecbF .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-RAVbLlvj7LpNecbF .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-RAVbLlvj7LpNecbF .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-RAVbLlvj7LpNecbF .marker{fill:#333333;stroke:#333333;}#mermaid-svg-RAVbLlvj7LpNecbF .marker.cross{stroke:#333333;}#mermaid-svg-RAVbLlvj7LpNecbF svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-RAVbLlvj7LpNecbF .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-RAVbLlvj7LpNecbF .cluster-label text{fill:#333;}#mermaid-svg-RAVbLlvj7LpNecbF .cluster-label span{color:#333;}#mermaid-svg-RAVbLlvj7LpNecbF .label text,#mermaid-svg-RAVbLlvj7LpNecbF span{fill:#333;color:#333;}#mermaid-svg-RAVbLlvj7LpNecbF .node rect,#mermaid-svg-RAVbLlvj7LpNecbF .node circle,#mermaid-svg-RAVbLlvj7LpNecbF .node ellipse,#mermaid-svg-RAVbLlvj7LpNecbF .node polygon,#mermaid-svg-RAVbLlvj7LpNecbF .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-RAVbLlvj7LpNecbF .node .label{text-align:center;}#mermaid-svg-RAVbLlvj7LpNecbF .node.clickable{cursor:pointer;}#mermaid-svg-RAVbLlvj7LpNecbF .arrowheadPath{fill:#333333;}#mermaid-svg-RAVbLlvj7LpNecbF .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-RAVbLlvj7LpNecbF .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-RAVbLlvj7LpNecbF .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-RAVbLlvj7LpNecbF .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-RAVbLlvj7LpNecbF .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-RAVbLlvj7LpNecbF .cluster text{fill:#333;}#mermaid-svg-RAVbLlvj7LpNecbF .cluster span{color:#333;}#mermaid-svg-RAVbLlvj7LpNecbF div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-RAVbLlvj7LpNecbF :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

master
功能A
修复功能A

5.之后merge分支devmaster分支,master分支如图

#mermaid-svg-4wKFU2PKnupEk7N0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-4wKFU2PKnupEk7N0 .error-icon{fill:#552222;}#mermaid-svg-4wKFU2PKnupEk7N0 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-4wKFU2PKnupEk7N0 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-4wKFU2PKnupEk7N0 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-4wKFU2PKnupEk7N0 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-4wKFU2PKnupEk7N0 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-4wKFU2PKnupEk7N0 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-4wKFU2PKnupEk7N0 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-4wKFU2PKnupEk7N0 .marker.cross{stroke:#333333;}#mermaid-svg-4wKFU2PKnupEk7N0 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-4wKFU2PKnupEk7N0 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-4wKFU2PKnupEk7N0 .cluster-label text{fill:#333;}#mermaid-svg-4wKFU2PKnupEk7N0 .cluster-label span{color:#333;}#mermaid-svg-4wKFU2PKnupEk7N0 .label text,#mermaid-svg-4wKFU2PKnupEk7N0 span{fill:#333;color:#333;}#mermaid-svg-4wKFU2PKnupEk7N0 .node rect,#mermaid-svg-4wKFU2PKnupEk7N0 .node circle,#mermaid-svg-4wKFU2PKnupEk7N0 .node ellipse,#mermaid-svg-4wKFU2PKnupEk7N0 .node polygon,#mermaid-svg-4wKFU2PKnupEk7N0 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-4wKFU2PKnupEk7N0 .node .label{text-align:center;}#mermaid-svg-4wKFU2PKnupEk7N0 .node.clickable{cursor:pointer;}#mermaid-svg-4wKFU2PKnupEk7N0 .arrowheadPath{fill:#333333;}#mermaid-svg-4wKFU2PKnupEk7N0 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-4wKFU2PKnupEk7N0 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-4wKFU2PKnupEk7N0 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-4wKFU2PKnupEk7N0 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-4wKFU2PKnupEk7N0 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-4wKFU2PKnupEk7N0 .cluster text{fill:#333;}#mermaid-svg-4wKFU2PKnupEk7N0 .cluster span{color:#333;}#mermaid-svg-4wKFU2PKnupEk7N0 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-4wKFU2PKnupEk7N0 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

master
功能A
修复功能A
dev开发功能B
修复merge.dev冲突

Q:为什么最后分支图会分叉?

A:第2、3步骤中,新分支都是继承master分支"功能A"这条记录。dev分支的记录前进到"dev开发新功能",而fixbug分支只是在"功能A"这条记录的基础上修改,它会覆盖上一条记录。fixbug分支合并时没有冲突但合并dev分支时本应该链接"功能A"之后,但是"功能A"之后现在链接"修复功能A",所以会有分叉。

这种分叉可以暂且叫做 “三方合并”,将“功能A”,“修复功能A”,“dev开发功能B”,三者合并

#mermaid-svg-azZR1FC6eam3HN5V {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-azZR1FC6eam3HN5V .error-icon{fill:#552222;}#mermaid-svg-azZR1FC6eam3HN5V .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-azZR1FC6eam3HN5V .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-azZR1FC6eam3HN5V .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-azZR1FC6eam3HN5V .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-azZR1FC6eam3HN5V .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-azZR1FC6eam3HN5V .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-azZR1FC6eam3HN5V .marker{fill:#333333;stroke:#333333;}#mermaid-svg-azZR1FC6eam3HN5V .marker.cross{stroke:#333333;}#mermaid-svg-azZR1FC6eam3HN5V svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-azZR1FC6eam3HN5V .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-azZR1FC6eam3HN5V .cluster-label text{fill:#333;}#mermaid-svg-azZR1FC6eam3HN5V .cluster-label span{color:#333;}#mermaid-svg-azZR1FC6eam3HN5V .label text,#mermaid-svg-azZR1FC6eam3HN5V span{fill:#333;color:#333;}#mermaid-svg-azZR1FC6eam3HN5V .node rect,#mermaid-svg-azZR1FC6eam3HN5V .node circle,#mermaid-svg-azZR1FC6eam3HN5V .node ellipse,#mermaid-svg-azZR1FC6eam3HN5V .node polygon,#mermaid-svg-azZR1FC6eam3HN5V .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-azZR1FC6eam3HN5V .node .label{text-align:center;}#mermaid-svg-azZR1FC6eam3HN5V .node.clickable{cursor:pointer;}#mermaid-svg-azZR1FC6eam3HN5V .arrowheadPath{fill:#333333;}#mermaid-svg-azZR1FC6eam3HN5V .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-azZR1FC6eam3HN5V .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-azZR1FC6eam3HN5V .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-azZR1FC6eam3HN5V .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-azZR1FC6eam3HN5V .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-azZR1FC6eam3HN5V .cluster text{fill:#333;}#mermaid-svg-azZR1FC6eam3HN5V .cluster span{color:#333;}#mermaid-svg-azZR1FC6eam3HN5V div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-azZR1FC6eam3HN5V :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

master
功能A
修复功能A
dev开发功能B

日志可以完整到看到这个开发的过程,但是过多使用merge,会产生很多很多的分叉,分叉之间又相互联系。四五个人不明显,但当十多个人共用一个仓库,整个开发流程就会很乱,进阶git可以学习一下后面讲的rebase,可以将整个开发流程整合为一条线

eg:merge太多

下一节开始介绍一些常用的指令

专栏速览:

  1. Git使用 从入门到入土 收藏吃灰系列(一) 专栏前言
  2. Git使用 从入门到入土 收藏吃灰系列(二) Git的安装与配置
  3. Git使用 从入门到入土 收藏吃灰系列(三) Git常用命令
  4. Git使用 从入门到入土 收藏吃灰系列(四) Git工作原理
  5. Git使用 从入门到入土 收藏吃灰系列(五) Git本地仓库搭建
  6. Git使用 从入门到入土 收藏吃灰系列(六) 链接远程仓库
  7. Git使用 从入门到入土 收藏吃灰系列 (七) 同时配置Gitee、Github 公钥
  8. Git使用 从入门到入土 收藏吃灰系列 (八) 什么是分支 分支的作用
  9. Git使用 从入门到入土 收藏吃灰系列 (九) git reset 移除暂存区与版本回退
  10. Git使用 从入门到入土 收藏吃灰系列 (十) 详谈push、fetch、pull
  11. Git使用 从入门到入土 收藏吃灰系列 (十一) 下载所有远程仓库分支
  12. Git使用 从入门到入土 收藏吃灰系列 (十二) git merge 与 git rebase
  13. Git使用 从入门到入土 收藏吃灰系列 (十三) git stash、git check-pick、git tag、git diff
  14. Git使用 从入门到入土 收藏吃灰系列 (十四) 清除git仓库的所有提交记录
  15. Git使用 从入门到入土 收藏吃灰系列 (十五) 自定义Git命令
  16. Git使用 (十六) Github上的小按钮
  17. Git使用 (十七) 解决Git Bash中文乱码

Git使用 从入门到入土 收藏吃灰系列 (八) 什么是分支 分支的作用相关推荐

  1. Git使用 从入门到入土 收藏吃灰系列 (九) git reset 移除暂存区与版本回退

    文章目录 一.前言 二.Git远程命令实践 2.1git reset 移除暂存区 2.2 git log+git reflog+git reset 版本回退 一.前言 参考安装Git 详细安装教程 参 ...

  2. Git使用 从入门到入土 收藏吃灰系列(三) Git常用命令

    文章目录 一.前言 二.常用的命令 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『Git』知道这些就够了_哔哩哔哩_bilibi ...

  3. Git使用 从入门到入土 收藏吃灰系列(四) Git工作原理

    文章目录 一.前言 一.Git基本理论(核心) 1.1工作区 1.2工作流程 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『Gi ...

  4. Git使用 从入门到入土 收藏吃灰系列(六) 链接远程仓库

    文章目录 一.前言 二.使用Gitee链接远程仓库(免密登录) 2.1链接仓库 2.2使用指令上传远程仓库 三.利用GitHub连接远程仓库(免密登录) 一.前言 参考安装Git 详细安装教程 参考视 ...

  5. Git使用 从入门到入土 收藏吃灰系列 (十) 详谈push、fetch、pull

    文章目录 一.前言 二.git push上传新的分支 三.git fetch 拉取远程仓库 四.git pull 拉取远程仓库 本节内容速览 二:git push使用 三:git fetch使用.为什 ...

  6. Git使用 从入门到入土 收藏吃灰系列 (十三) git stash、git check-pick、git tag、git diff

    文章目录 一.前言 二.git stash 存储到堆栈 三.Git tag 标签 四.git cherry-pick 挑选合并 五.git diff 本节速览 git stash 堆栈 git tag ...

  7. Git使用 从入门到入土 收藏吃灰系列 (十四) 清除git仓库的所有提交记录

    文章目录 一.前言 二.清除git仓库的所有提交记录 本节速览 清除git仓库的所有提交记录 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 ...

  8. 一个命令让redis服务端所有信息无所遁形~(收藏吃灰系列)

    1.info命令作用 在redis客户端执行INFO 命令以便于计算机解析和人工阅读的简单格式返回有关redis服务端的所有信息和统计数据. 可选参数可用于选择特定的信息部分: Server 服务器基 ...

  9. 最新版Zookeeper常用命令总结(收藏吃灰系列)

    1.服务端常用命令 在完成zookeeper的伪集群部署之后(部署教程参考linux上部署最新版本zookeeper伪分布式集群),可在bin目录下执行这些命令 启动ZK服务: bin/zkServe ...

最新文章

  1. Confluence 6 数据库表-空间(Spaces)
  2. 父爱动画代码python_pygame用blit()实现动画效果的示例代码
  3. 数据结构读书笔记(三)(C语言)
  4. mysql ERROR 1045 (28000): Access denied for user解决方法
  5. 省控线是什么意思,本科一批以及本科二批省控线是什么意思
  6. c#中 utm坐标转换经纬度坐标
  7. C语言_4 循环结构;一些例题
  8. 三十六以内某进制下的数转换为另一进制下的数(递归版,迭代版)——秦九昭算法
  9. python cox模型_基于Cox比例风险模型的失效时间预测
  10. 【北亚数据恢复】zfs文件系统的服务器误删除的数据恢复
  11. 计算机管理无用怎么办,win7系统如何将资源管理器窗口中无用的图标删除掉?...
  12. 数字IC手撕代码-兆易创新笔试真题
  13. 微耕门禁显示通信不上服务器,微耕中性门禁控制器通讯不上是怎么回事?主要有什么注意事项...
  14. 南理工校外调剂计算机有消息,提醒!这些学校已经开启预调剂了!
  15. 2019杭电多校 第七场 Kejin Player 6656(求期望值)
  16. Mac苹果电脑单片机开发
  17. 调整文字框顺序,返回顺时针或逆时针顺序
  18. redis使用c++ API 的hiredis连接详解
  19. 【菜鸟教程】Zookeeper基础入门(使用curator)【下】
  20. 深度学习计算机预算_如何在预算有限的情况下为深度学习电脑挑选零件

热门文章

  1. 【MM32F5270开发板试用】手势传感PAJ7620U2的智能家居应用
  2. 机构自由度计算(笔记)
  3. WPS文字如何将纸张大小由A4调整为A3默认纸张大小是A4
  4. Ubuntu 20 LTS 安装kubenetes 1.25
  5. 教你简体中文翻译成繁体中文
  6. bp神经网络模型拓扑结构,bp神经网络模型是什么
  7. 蹒跚学步之IDEA建立个基本的Springboot项目
  8. win10系统进入英雄联盟后黑屏怎么办
  9. margin外边距合并的问题
  10. ubuntu9.10稳定运行QQ2008和迅雷