一、前言
- 参考安装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.现在切回master
,merge
合并分支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
分支dev
到master
分支,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太多
下一节开始介绍一些常用的指令
专栏速览:
- Git使用 从入门到入土 收藏吃灰系列(一) 专栏前言
- Git使用 从入门到入土 收藏吃灰系列(二) Git的安装与配置
- Git使用 从入门到入土 收藏吃灰系列(三) Git常用命令
- Git使用 从入门到入土 收藏吃灰系列(四) Git工作原理
- Git使用 从入门到入土 收藏吃灰系列(五) Git本地仓库搭建
- Git使用 从入门到入土 收藏吃灰系列(六) 链接远程仓库
- Git使用 从入门到入土 收藏吃灰系列 (七) 同时配置Gitee、Github 公钥
- Git使用 从入门到入土 收藏吃灰系列 (八) 什么是分支 分支的作用
- Git使用 从入门到入土 收藏吃灰系列 (九) git reset 移除暂存区与版本回退
- Git使用 从入门到入土 收藏吃灰系列 (十) 详谈push、fetch、pull
- Git使用 从入门到入土 收藏吃灰系列 (十一) 下载所有远程仓库分支
- Git使用 从入门到入土 收藏吃灰系列 (十二) git merge 与 git rebase
- Git使用 从入门到入土 收藏吃灰系列 (十三) git stash、git check-pick、git tag、git diff
- Git使用 从入门到入土 收藏吃灰系列 (十四) 清除git仓库的所有提交记录
- Git使用 从入门到入土 收藏吃灰系列 (十五) 自定义Git命令
- Git使用 (十六) Github上的小按钮
- Git使用 (十七) 解决Git Bash中文乱码
Git使用 从入门到入土 收藏吃灰系列 (八) 什么是分支 分支的作用相关推荐
- Git使用 从入门到入土 收藏吃灰系列 (九) git reset 移除暂存区与版本回退
文章目录 一.前言 二.Git远程命令实践 2.1git reset 移除暂存区 2.2 git log+git reflog+git reset 版本回退 一.前言 参考安装Git 详细安装教程 参 ...
- Git使用 从入门到入土 收藏吃灰系列(三) Git常用命令
文章目录 一.前言 二.常用的命令 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『Git』知道这些就够了_哔哩哔哩_bilibi ...
- Git使用 从入门到入土 收藏吃灰系列(四) Git工作原理
文章目录 一.前言 一.Git基本理论(核心) 1.1工作区 1.2工作流程 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『Gi ...
- Git使用 从入门到入土 收藏吃灰系列(六) 链接远程仓库
文章目录 一.前言 二.使用Gitee链接远程仓库(免密登录) 2.1链接仓库 2.2使用指令上传远程仓库 三.利用GitHub连接远程仓库(免密登录) 一.前言 参考安装Git 详细安装教程 参考视 ...
- Git使用 从入门到入土 收藏吃灰系列 (十) 详谈push、fetch、pull
文章目录 一.前言 二.git push上传新的分支 三.git fetch 拉取远程仓库 四.git pull 拉取远程仓库 本节内容速览 二:git push使用 三:git fetch使用.为什 ...
- Git使用 从入门到入土 收藏吃灰系列 (十三) git stash、git check-pick、git tag、git diff
文章目录 一.前言 二.git stash 存储到堆栈 三.Git tag 标签 四.git cherry-pick 挑选合并 五.git diff 本节速览 git stash 堆栈 git tag ...
- Git使用 从入门到入土 收藏吃灰系列 (十四) 清除git仓库的所有提交记录
文章目录 一.前言 二.清除git仓库的所有提交记录 本节速览 清除git仓库的所有提交记录 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 ...
- 一个命令让redis服务端所有信息无所遁形~(收藏吃灰系列)
1.info命令作用 在redis客户端执行INFO 命令以便于计算机解析和人工阅读的简单格式返回有关redis服务端的所有信息和统计数据. 可选参数可用于选择特定的信息部分: Server 服务器基 ...
- 最新版Zookeeper常用命令总结(收藏吃灰系列)
1.服务端常用命令 在完成zookeeper的伪集群部署之后(部署教程参考linux上部署最新版本zookeeper伪分布式集群),可在bin目录下执行这些命令 启动ZK服务: bin/zkServe ...
最新文章
- Confluence 6 数据库表-空间(Spaces)
- 父爱动画代码python_pygame用blit()实现动画效果的示例代码
- 数据结构读书笔记(三)(C语言)
- mysql ERROR 1045 (28000): Access denied for user解决方法
- 省控线是什么意思,本科一批以及本科二批省控线是什么意思
- c#中 utm坐标转换经纬度坐标
- C语言_4 循环结构;一些例题
- 三十六以内某进制下的数转换为另一进制下的数(递归版,迭代版)——秦九昭算法
- python cox模型_基于Cox比例风险模型的失效时间预测
- 【北亚数据恢复】zfs文件系统的服务器误删除的数据恢复
- 计算机管理无用怎么办,win7系统如何将资源管理器窗口中无用的图标删除掉?...
- 数字IC手撕代码-兆易创新笔试真题
- 微耕门禁显示通信不上服务器,微耕中性门禁控制器通讯不上是怎么回事?主要有什么注意事项...
- 南理工校外调剂计算机有消息,提醒!这些学校已经开启预调剂了!
- 2019杭电多校 第七场 Kejin Player 6656(求期望值)
- Mac苹果电脑单片机开发
- 调整文字框顺序,返回顺时针或逆时针顺序
- redis使用c++ API 的hiredis连接详解
- 【菜鸟教程】Zookeeper基础入门(使用curator)【下】
- 深度学习计算机预算_如何在预算有限的情况下为深度学习电脑挑选零件
热门文章
- 【MM32F5270开发板试用】手势传感PAJ7620U2的智能家居应用
- 机构自由度计算(笔记)
- WPS文字如何将纸张大小由A4调整为A3默认纸张大小是A4
- Ubuntu 20 LTS 安装kubenetes 1.25
- 教你简体中文翻译成繁体中文
- bp神经网络模型拓扑结构,bp神经网络模型是什么
- 蹒跚学步之IDEA建立个基本的Springboot项目
- win10系统进入英雄联盟后黑屏怎么办
- margin外边距合并的问题
- ubuntu9.10稳定运行QQ2008和迅雷