# Test **Repository Path**: ye-lifan/test ## Basic Information - **Project Name**: Test - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-12-02 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # git使用 ### 简介 一个用于Windows和Mac的免费Git客户端。 Sourcetree简化了如何与Git存储库进行交互,这样您就可以集中精力编写代码。通过Sourcetree的简单Git GUI可视化和管理存储库。 官网下载地址:[Sourcetree | Free Git GUI for Mac and Windows ](https://www.sourcetreeapp.com/) ### 使用方法 ##### 1)安装 ``` 1)git下载成功后,安装SourceTree 2)重启软件进入界面,进入如下界面表示成功 ``` ![1606895159001](02-git使用.assets/1606895159001.png) ##### 2)拉取代码 ``` 1)运行git生成秘钥 2)绑定git公钥 3)利用sourcetree拉取代码 如果仓库类型表明"这不是一个标准的Git仓库" 1,项目地址获取错误 2,没有项目访问权限 ``` ![1606895713585](02-git使用.assets/1606895713585.png) ##### 3)上传代码 1,项目克隆完成后,左侧只有一个分支master 克隆完成后得到的是发布后的master源码,需要获取最新的开发中源码需要对项目流进行初始化 ![1606897392125](02-git使用.assets/1606897392125.png) ![1606897427125](02-git使用.assets/1606897427125.png) 获取develop分支源码 开发任务在develop分支上完成 分支类型: ```  1) master,最终发布版本,整个项目中有且只有一个   2) develop,项目的开发分支,原则上项目中有且只有一个   3) feature,功能分支,用于开发一个新的功能   4) release,预发布版本,介于develop和master之间的一个版本,主要用于测试   5) hotfix,修复补丁,用于修复master上的bug,直接作用于master ``` 上传步骤 ``` 1)将需要上传的文件放入暂存 2)备注上传文件 3)选择上传的分支 3)推送文件至仓库 ``` ![1606904656256](02-git使用.assets/1606904656256.png) ![1606904663936](02-git使用.assets/1606904663936.png) ![1606904681094](02-git使用.assets/1606904681094.png) ![1606904728542](02-git使用.assets/1606904728542.png) ![1606904697911](02-git使用.assets/1606904697911.png) ![1606904760935](02-git使用.assets/1606904760935.png) ### 新增功能开发流程 ``` 当开发中需要增加一个新的功能时,可新建feature分支,用于增加新功能,并且不影响开发中的develop源码,当新功能增加完成后,完成feature分支,将新功能合并到develop中,更新develop上的代码 ``` ##### 1)新建feature 开发分支指向develop,点击"Git工作流" ![1606904898337](02-git使用.assets/1606904898337.png) 选择建立新的分支 ![1606904939110](02-git使用.assets/1606904939110.png) 输入功能名称,项目结构中增加feature分支,并且当前开发分支指向新建的feature分支![1606905057591](02-git使用.assets/1606905057591.png) ##### 2)开发功能 在 add分支下进行开发任务,并提交 提交3个测试文件到该项目文件夹 ![1606905222207](02-git使用.assets/1606905222207.png) 切换回develop分支后,会发现develop下并没有增加文件,说明在feature下进行操作不影响develop分支源码 ##### 3)完成功能 在完成feature开发后,将feature中的源码合并到develop中。点击"Git工作流",选择"完成功能![1606906999766](02-git使用.assets/1606906999766.png) ![1606908913309](02-git使用.assets/1606908913309.png) ### 协作开发 ##### 合并冲突 当多人协作开发时,出现不同人员对同一文件进行操作,引发合并冲突情况时 新建2个feature,对测试1文件进行修改,然后分别合并 add1在测试1文件中的修改 ![1606909301228](02-git使用.assets/1606909301228.png) add2在测试1文件中的修改 ![1606909607468](02-git使用.assets/1606909607468.png) ![1606909624188](02-git使用.assets/1606909624188.png) 合并add1和add2会出现冲突 ![1606909724674](02-git使用.assets/1606909724674.png) 查看未提交的更改,提示Test1.txt出现冲突 ![1606909757883](02-git使用.assets/1606909757883.png) 打开Test1.txt ![1606909807563](02-git使用.assets/1606909807563.png) 出现<<<<<<< HEAD、=======、>>>>>>> feature/add2,HEAD和=号之间表示当前分支下的代码,=号和>>>>>>> feature/add2之间表示要合并的分支下的代码,>>>>>>> feature/add2表示了要合并的分支的分支名称, 根据情况区分要保留的代码,要删除的代码,最后再删除<<<<<<< HEAD、=======、和>>>>>>> feature/add2 ![1606909979203](02-git使用.assets/1606909979203.png) 将修改的代码再一次提交 ![1606910153138](02-git使用.assets/1606910153138.png) 一旦出现feature合并冲突,要合并的feature分支不会被删除,如add2,确保合并没有问题后,可手动删除add2 ### 测试回滚 代码回滚,适用于的场景: 1.提交错代码,想放弃刚刚提交的部分; 2.代码发生冲突,处理比较麻烦,为了代码安全,直接回滚到之前干净的代码。 ##### 本地回滚 回滚自己已经提交的代码,但还未推送到远程仓库。 ![1606911940897](02-git使用.assets/1606911940897.png) 目前我在本地提交了两次,但第二次有大量错误代码,我选择放弃,想直接回到第一次提交的位置,采取以下步骤: 选中你想回滚到的提交记录,右击->将(所在分支)重置到这次提交->强行合并->确定 ![1606912005147](02-git使用.assets/1606912005147.png) ![1606912044986](02-git使用.assets/1606912044986.png) ##### 远程回滚 SourceTree默认是不提供这种操作的,因为存在风险。所以,回滚远程代码,一定要注意: 1.想要放弃的代码,是所有开发成员都一致同意的; 2。想要放弃的代码只是自己的,中间没有别人的提交记录,这可以直接回滚。 3.这个操作过程中,提醒其他成员不要推送代码。 操作步骤如下: 1.SourceTree开启允许强制推送权限 ![1606912243419](02-git使用.assets/1606912243419.png) 2.和本地回滚一样,先回滚到想要的位置 3.强制推送代码,切记这个时候不要拉取代码 ##### 回滚历史文件寻找 ![1606912507761](02-git使用.assets/1606912507761.png) 点击回滚区块![1606912727786](02-git使用.assets/1606912727786.png) 找回回滚历史文件 ### 测试开发 ##### 新建测试 建立release分支,进入预发布测试阶段。点击“Git工作流”,选择“建立新的发布版本” ![1606910489971](02-git使用.assets/1606910489971.png) ![1606910518747](02-git使用.assets/1606910518747.png) 从预览中可以看出release是从develop分出的,输入版本名点击确定 ![1606910598501](02-git使用.assets/1606910598501.png) v1.0为阶段性发布版本,主要用于发布前测试,后续开发依旧的develop中进行,测试中发现的问题直接在release上进行修改,修改后提交即可 ##### 正式发布 测试完成后,可以进行正式发布,在当前分支指向v1.0时,点击"Git工作流",选择"完成发布版本" ![1606910732619](02-git使用.assets/1606910732619.png) ![1606910771893](02-git使用.assets/1606910771893.png) 可以看到v1.0向develop和master分别合并,完成正式发布 ![1606910844403](02-git使用.assets/1606910844403.png) 合并完成后默认指向develop为当前分支,master增加多个版本更新,将master分支推送到origin,完成线上发布 ### 修复补丁 正式版本发布后,develop可继续进行后续开发,当正式版本出现问题时,需要进行问题的修改,可以在master分支建立修改补丁hotfix。将当前分支切换到master,点击“Git工作流”,选择“建立新的修复补丁” ![1606910956075](02-git使用.assets/1606910956075.png) ![1606910971251](02-git使用.assets/1606910971251.png) 预览中hotfix分支是从master拉去出来的,输入修复补丁名,点确定 ![1606910991034](02-git使用.assets/1606910991034.png) 在该分支下进行master的问题修改,修改完成后进行提交。当所有补丁问题修改完成后,点击“Git工作流”,选择“完成修复补丁” ![1606911018657](02-git使用.assets/1606911018657.png) ![1606911028289](02-git使用.assets/1606911028289.png) 预览中,H_fix_1向master和develop分别合并,点击确定,完成分支合并。 ![1606911072146](02-git使用.assets/1606911072146.png) 合并完成后,默认当前分支为develop,master分支有版本需要更新,当前分支切换为master,进行推送,完成补丁修复。 在完成发布版本和完成修复补丁时,如果遇到冲突,可仿照上述5进行冲突修改,再进行后续操作