Git可视化管理工具(SourceTree)使用操作大全经典
前言:
俗话说的好工欲善其事必先利其器,git分布式版本控制系统是我们日常开发中不可或缺的。目前市面上比较流行的git可视化管理工具有sourcetree、github desktop、tortoisegit,综合网上的一些文章分析和自己的日常开发实践心得个人比较推荐开发者使用sourcetree,因为sourcetree同时支持windows和mac,并且界面十分的精美简洁,大大的简化了开发者与代码库之间的git操作方式。该篇文章主要是对日常开发中使用sourcetree可视化管理工具的一些常用操作进行详细讲解。
连接gitee or github,获取代码:
注意:这里介绍的是使用ssh协议获取关联远程仓库的代码,大家也可以直接使用过https协议的方式直接输入账号密码获取关联代码!
在sourcetree中添加ssh密钥:
工具=>选择:
添加ssh密钥位置:c:\users\xxxxx\.ssh\id_rsa.pub:
ssh客户端选择openssh:
clone对应托管平台仓库(以gitee为例):
打开码云,找到自己需要clone的仓库!
sourcetree设置默认工作目录:
由上面我们可以发现每次clone克隆项目的时候,克隆下来的项目默认存储位置都是在c盘,因此每次都需要我们去选择项目存放的路径,作为一个喜欢偷懒的人而言当然不喜欢这种方式啦,因此我们可以设置一个默认的项目存储位置。
设置sourcetree默认项目目录:
点击工具=>选项=>一般=>找到项目目录设置clone项目默认存储的位置:
sourcetree代码提交:
1.首先切换到需要修改功能代码所在的分支:
2.将修改的代码提交到暂存区:
3.将暂存区中的代码提交到本地代码仓库:
注意:多人同时开发项目的时候,不推荐默认选中立即推送变更到origin/develop,避免一些不必要的麻烦!
4.代码拉取更新本地代码库,并将代码推送到远程仓库:
勾选需要推送的分支,点击推送到远程分支:
代码成功推送到远程代码库:
5.在gitee中查看推送结果:
sourcetree分支切换,新建,合并:
1.分支切换:
双击切换:
单击鼠标右键切换:
2.新建分支:
注意:在新建分支时,我们需要在哪个主分支的基础上新建分支必须先要切换到对应的主分支才能到该主分支上创建分支,如下我们要在master分支上创建一个feature-0613分支:
3.合并分支:
注意:在合并代码之前我们都需要将需要合并的分支拉取到最新状态(**避免覆盖别人的代码,或者丢失一些重要文件)!!!!!
在master分支上点击右键,选择合并feature-0613至当前分支即可进行合并:
分支合并成功:
sourcetree代码冲突解决:
首先我们需要制造一个提交文件遇到冲突的情景:
在sourecetree中在clone一个新项目,命名为pingrixuexilianxi2,如下图所示:
我们以项目中的【代码合并冲突测试.txt】文件为例:
在pingrixuexilianxi2中添加内容,并提交到远程代码库,添加的内容如下:
在pingrixuexilianxi中添加内容,提交代码(不选择立即推送变更到origin/master),拉取代码即会遇到冲突:
冲突文件中的内容:
直接打开冲突文件手动解决冲突:
由下面的冲突文件中的冲突内容我们了解到:
1 2 3 4 5 |
<<<<<<< head 6月19日 pingrixuexilianxi添加了内容 ======= 6月18日 pingrixuexilianxi2修改了这个文件哦 >>>>>>> a8284fd41903c54212d1105a6feb6c57292e07b5 |
<<<<<<< head到 =======里面的【6月19日 pingrixuexilianxi添加了内容】是自己刚才的commit提交的内容
=======到 >>>>>>> a8284fd41903c54212d1105a6feb6c57292e07b5里面的【6月18日 pingrixuexilianxi2修改了这个文件哦】是远程代码库更新的内容(即为pingrixuexilianxi2本地代码库推送修改内容)。
手动冲突解决方法:
根据项目需求删除不需要的代码就行了,假如都需要的话我们只需要把<<<<<<< head======= >>>>>>> a8284fd41903c54212d1105a6feb6c57292e07b5都删掉冲突就解决了(注意,在项目中最后这些符号都不能存在,否则可能会报异常)。
最后将冲突文件标记为已解决,提交到远程仓库:
采用外部文本文件对比工具beyond compare解决冲突:
sourcetree配置文本文件对比工具beyond compare:
工具=>选项=>比较:
使用beyond compare解决冲突:
beyond compare使用技巧:
官方全面教程:https://www.beyondcompare.cc/jiqiao/
sourcetree打开外部和合并工具:
注意:第一次启动beynod compare软件需要一会时间,请耐心等待:
beynod compare进行冲突合并:
点击保存文件后关闭beynod compare工具,sourcetree中的冲突就解决了,在sourcetree中我们会发现多了一个 .orig 的文件。接着选中那个.orig文件,单击右键 => 移除,最后我们推送到远程代码库即可:
sourcetree中的基本名词说明:
克隆/新建(clone):从远程仓库url加载创建一个与远程仓库一样的本地仓库。
提交(commit):将暂存区文件上传到本地代码仓库。
推送(push):将本地仓库同步至远程仓库,一般推送(push)前先拉取(pull)一次,确保一致(十分注意:这样你才能达到和别人最新代码同步的状态,同时也能够规避很多不必要的问题)。
拉取(pull):从远程仓库获取信息并同步至本地仓库,并且自动执行合并(merge)操作(git pull=git fetch+git merge)。
获取(fetch):从远程仓库获取信息并同步至本地仓库。
分支(branch):创建/修改/删除分枝。
合并(merge):将多个同名文件合并为一个文件,该文件包含多个同名文件的所有内容,相同内容抵消。
贮藏(git stash):保存工作现场。
丢弃(discard):丢弃更改,恢复文件改动/重置所有改动,即将已暂存的文件丢回未暂存的文件。
标签(tag):给项目增添标签。
工作流(git flow):团队工作时,每个人创建属于自己的分枝(branch),确定无误后提交到master分支。
终端(terminal):可以输入git命令行。
每次拉取和推送的时候不用每次输入密码的命令行:git config credential.helper osxkeychain sourcetree。
检出(checkout):切换不同分支。
添加(add):添加文件到缓存区。
移除(remove):移除文件至缓存区。
重置(reset):回到最近添加(add)/提交(commit)状态。
1、fork 项目:
2、克隆本地
打开git bash输入仓库克隆命令:
|
3、根据文档创建分支
拖进 sourcetree,基于 dev 创建分支如下图:
4、提交修改的代码到远程代码库
文章上面已经提到了使用sourcetree提交的相关操作,可参考:
https://www.cnblogs.com/can-daydayup/p/13128633.html#_label5(或者ctrl f:sourcetree代码提交)
当然也可以使用git命令提交:
|
5、提交 pull request
第四步提交成功后,进入原来fork的仓库,点击 compare
提交你的说明,选择合并的分支即可,剩下等待合并。
到此这篇关于git可视化管理工具(sourcetree)使用操作大全经典的文章就介绍到这了,更多相关sourcetree使用操作(入门到精通)内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
推荐阅读
-
IDEA中使用Gradle构建项目中文报GBK错误的解决方案
-
将Java应用做成exe可执行软件的流程步骤
-
SpringBoot实现多种来源的Zip多层目录打包下载
需要将一批文件(可能分布在不同目录、不同来源)打包成zip格式,按目录结构导出给用户下载。1.核心思路支持将本地服务器上的文...
-
Java中减少if-else的设计模式和优化技巧
前言“过于依赖if-else不仅会让代码变得臃肿不堪,还会使维护成本大大增加。其实,if-else虽然是最基础的条件分支,...
-
Spring Boot 中使用 Drools 规则引擎的完整步骤
-
Spring Boot整合Drools规则引擎实战指南及最佳实践
一、drools简介与核心概念1.1什么是drools?drools是redhat旗下的开源业务规则管理系统(brms),...
-
Springboot项目瘦身之如何将jar包与lib依赖分开打包
将jar包与lib依赖分开打包方法一:项目和依赖完全分离maven-jar-plugin负责生成jar文件(jar文件中...
-
Spring动态修改bean属性配置key的几种方法
静态配置的局限性先来看一个典型场景。假设我们有一个数据源配置类:@configuration@configurationpr...
-
Java如何判断一个IP是否在给定的网段内
-
从零开始学java之二叉树和哈希表实现代码