主要用于分享如何使用可视化工具创建分支,删除,合并、挑拣、剥离、pr,以及一些基本操作,如果您是命令极客,可以忽略。同时这也是做过团队内部技术分享的,完全可以包含企业日常开发98%的Git使用场景,因为我是搞.NET的,所以用VS演示,当然也考虑其他的语言,是用SourceTree来演示。
因为有的图涉及前司,所以用了马赛克,但是不影响观看,如果需要视频,可以评论区留言。
1.创建分支
1.使用vs创建分支

1.右下角点击输入分支名称,选择【基于】,如果你想基于哪个分支开分支,开发就选择开发,测试就选择测试,uat就选择uat。

2.创建成功后可以看到已经在当前分支

2.使用sourceTree创建分支
1.切换到自己所在分支,选择【分支】按钮,在弹出的选择框中输入分支名称,这里比vs好的地方,就是要从哪个分支开就得切换过去,不会选错

2.创建完成后,会自动切换到对应分支,和vs不一样此时是没有推送的,要自己手动推送一下

2.删除分支
1.使用vs删除分支
1.切换到其他分支,选择需要删除的分支,右键点击删除,这个是直接就删除了

2.使用sourceTree删除分支
1.跟vs一样切换到其他分支,右键选择需要删除的分支,点击确定,选择删除,此时删除的是本地,勾选强制删除就是本地远程一起删除了

3.合并分支 (merge)
以将dev合并到master为例,首先我们要知道 什么叫合并分支?
通常就是把分支的代码往主干合,对主干的定义,我需要合到master,那此时对于分支来说,master就是主干,我需要合到Dev,那对于分支来说,Dev就是主干
怎么合并分支?
例如我开启了一个分支叫dev1,现在需要把dev1合并到master,那我们的做法是,切换到master分支,然后选择dev1分支,选择合并到当前分支,记住正常流程一定是分支往主干合,不要搞反了
1.使用vs合并分支
1.切换到master分支,右键选择dev1分支右键,在弹出的选项中选择【合并到Current Branch】

2.使用sourceTree合并分支
1.切换到master分支,右键选择dev1分支右键,在弹出的选项中选择【合并dev1到当前分支】

3.解决冲突
1.已经拉取了最新分支合并冲突,修改了同一个文件
2.没有拉取最新分支合并,说明你的主干代码在最新的后面,此时把分支往主干合并,就会提示
vs 提示
这个时候最好选择,【拉取】,不要选拉取然后推送(因为会拉取自动解决了冲突)他会自动推送了

1.点击拉取之后会有冲突

2.右键有冲突的文件,选择【合并】,也可以双击直接进到合并界面
-
选择合并或者双击默认加载的是3个文件块,分别是【别人的】【你的】【没改之前的】
-
选择比较传入项和传入的加载的是2个文件块,分别是【别人的】【你的】
-
选择比较当前项加载的是2个文件块,分别是【没改之前的】【你的】
-
选择比较传入的项加载的是2个文件块,分别是【没改之前的】【别人的】
默认是下面这样,记住顺序,合并的时候搞清楚

然后比较代码,选择合适的代码,不要一股脑的左边,或者右边,或者2边一起选
1.不清楚的没把握的在工作群里发出来,请求协助,不要偷懒,按照自己的理解选择
2.宁可丢自己也不要,弄丢别人的,被人吐槽代码都不会合,还写什么代码?
3.笨笨的方法,先把自己拷贝一份出来,再选择别人的,再把自己的一个一个粘进去
Source 提示

选择冲突的文件

右边区域有对应的文件信息
1.紫色 = 没改的,红色= 别人的,绿色是你自己的
通常选择冲突文件,右键选择解决冲突,我配置的是Beyond Compare,不要只选择【使用他人】,或者【我的版本】


没有vs那么强大,可以2边都选,建议步骤,先选右边,然后把左边的粘贴过来
4.销更改
1.回滚提交,但是会创建历史,已经推送的会有,未推送的建议直接reset
4.变基 (rebase)
没特殊要求,不搞这个因为对于新手来说,会搞的团队更加痛不欲生!
5.储藏(剥离)分支代码 (stash )
适用于你写到一半,有人跟你说,切下分支,不知道这个功能的时候,你自己先提交一下,或者copy一份代码,或者重新拉一个仓库?
小砾在dev1认真的写代码,同事让他看下另外一个分支有个bug,比较紧急,这个时候他一部分代码写到一半,直接切分支报错了,如果是你你怎么解决?
1.切换分支代码丢了算了?
2.用笨方法,打个压缩包备份,等下晚上加班,自己一点一点粘过来
3.再拉个仓库
4.......使用储藏-
vs储藏
点击全部提交小三角形,选择全部存储

上面修改的就出现在下面了,然后就可以切换其他分支了

需要的时候右键存储的选项,选择应用

sourceTree储藏
点击【储藏】在弹出的选项框输入一个名字,点击确定

需要的时候右键存储的选项,选择应用,就回来了

6.挑拣代码 (cherry-pick )
适用于特殊的提交,需要合并到指定分支,缺陷就是必须是单独的提交,如果多次提交就要挑拣多次了
小砾在dev1认真的写代码,同事分配了一个bug给他修复,但是他没有开分支,在dev1上直接提交了,现在那个bug要合到uat了,他又不想再改一遍,又不能直接将分支代码合过去,怎么办?
1.含泪将代码直接copy出来,在粘贴到指定的分支中去,1个还好,100个怎么办?我觉得现在很多人都是这样,我在知道这个东西之前,也是这样。
vs挑拣
1.切换到需要挑拣到的分支,我这里需要将dev1的提交,挑拣到master,窗口选择git,选择管理分支

2.在弹出的界面,单击dev1分支,在弹出的历史记录里面找到需要挑拣的提交,右键弹出的菜单,选择【挑拣】

3.如果被挑拣的代码和你目标分支有冲突,你依然需要解决冲突,完成挑拣
4.打开master分支,已经存在对应的提交

SourceTree 挑拣
1.切换到需要挑拣到的分支,我这里需要将test1的提交,挑拣到master,那就是切换到master

2.单击test,在右边出现的提交记录中,选择需要挑拣的提交,右键在弹出的下拉选项中,选择 【遴选】

3.有冲突一样解决,就ok

7.打补丁(patch)
跟挑拣差不多,但是是把单独的提交弄出来成一个补丁文件,然后应用
1.找到需要打成补丁的提交


2.生成的补丁文件

3.点击工具,选择应用补丁

8.打标签 (tag)
有新版发布,或者重要的节点,可以打tag
使用vs打标签

1.点击右下角,选择推送标签

使用sourceTree打标签
1.切换到目标分支,选择标签

2.在标签列表查看,然后推送到远程

9.如何PR (pull request)
适用于开了分支保护和一些开源中把分支合并流程化
1.以我们自己的私有git为例,找到合并请求tab

2.创建合并请求,选择对应选项,合并到哪里,从谁合过去
