目录

Git管理神器SourceTree使用教程详解连接远程仓库,克隆,拉取,提交,推送,新建切换合并分支,冲突解决,提交PR...

目录

Git管理神器SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决,提交PR)…

https://i-blog.csdnimg.cn/blog_migrate/495e3c11d80909cfef188496421cc99d.png

https://i-blog.csdnimg.cn/blog_migrate/62ac77c742dc40fcd4aa82d2eceee6d7.jpeg

前言:

俗话说的好工欲善其事必先利其器,Git分布式版本控制系统是我们日常开发中不可或缺的。目前市面上比较流行的Git可视化管理工具有SourceTree、Github Desktop、TortoiseGit,综合网上的一些文章分析和自己的日常开发实践心得个人比较推荐开发者使用SourceTree,因为SourceTree同时支持Windows和Mac,并且界面十分的精美简洁,大大的简化了开发者与代码库之间的Git操作方式。该篇文章主要是对日常开发中使用SourceTree可视化管理工具的一些常用操作进行详细讲解。

SourceTree | Github Desktop | TortoiseGit 可视化管理工具对比:

SourceTree介绍和Atlassian账号注册和登录教程:

连接Gitee or GitHub,获取代码:

注意:这里介绍的是使用SSH协议获取关联远程仓库的代码,大家也可以直接使用过HTTPS协议的方式直接输入账号密码获取关联代码!

全面概述Gitee和GitHub生成/添加SSH公钥:

在SourceTree中添加SSH密钥:

工具=>选择:

https://i-blog.csdnimg.cn/blog_migrate/908749335bd3344b1686772746714377.png

添加SSH密钥位置:C:\Users\xxxxxssh\id_rsa.pub:

https://i-blog.csdnimg.cn/blog_migrate/01691ede13ec99e012f2a15da691014e.png

SSH客户端选择OpenSSH:

https://i-blog.csdnimg.cn/blog_migrate/589954b0977256a4b0672af7fa183d5e.png

Clone对应托管平台仓库(以Gitee为例):

打开码云,找到自己需要Clone的仓库!

https://i-blog.csdnimg.cn/blog_migrate/6e5a43619271462a6a4483496c071bf4.png

https://i-blog.csdnimg.cn/blog_migrate/3b365d1815053c486e1bb695bc18e218.png

https://i-blog.csdnimg.cn/blog_migrate/1c788c63e7cf99089c9d771fde70cbda.png

SourceTree设置默认工作目录:

由上面我们可以发现每次Clone克隆项目的时候,克隆下来的项目默认存储位置都是在C盘,因此每次都需要我们去选择项目存放的路径,作为一个喜欢偷懒的人而言当然不喜欢这种方式啦,因此我们可以设置一个默认的项目存储位置。

设置SourceTree默认项目目录:

点击工具=>选项=>一般=>找到项目目录设置Clone项目默认存储的位置:

https://i-blog.csdnimg.cn/blog_migrate/677fe4c2a923d6caff14142406a457f0.png

SourceTree代码提交:

1.首先切换到需要修改功能代码所在的分支:

https://i-blog.csdnimg.cn/blog_migrate/a450a5abcf5a2962ecdc2bcc3d05be91.png

https://i-blog.csdnimg.cn/blog_migrate/957031dc7b4441ff73495afe42af6950.png

2.将修改的代码提交到暂存区:

https://i-blog.csdnimg.cn/blog_migrate/5939cd8b8dbcfdef9493754e3663a88e.png

3.将暂存区中的代码提交到本地代码仓库:

注意:多人同时开发项目的时候,不推荐默认选中立即推送变更到origin/develop,避免一些不必要的麻烦!

https://i-blog.csdnimg.cn/blog_migrate/5cf9497b0826b0569663e85414493aa3.png

4.代码拉取更新本地代码库,并将代码推送到远程仓库:

https://i-blog.csdnimg.cn/blog_migrate/ba04dd8395edd4130ed4bd0b5ef3a091.png

勾选需要推送的分支,点击推送到远程分支:

https://i-blog.csdnimg.cn/blog_migrate/b736dc468ac9a1ef0683d06434f52470.png

代码成功推送到远程代码库:

https://i-blog.csdnimg.cn/blog_migrate/9afce212907145bda93076b747e94f0c.png

5.在Gitee中查看推送结果:

https://i-blog.csdnimg.cn/blog_migrate/94d8aa216038f5ee095e9b681a12085f.png

SourceTree分支切换,新建,合并:

1.分支切换:

双击切换:

https://i-blog.csdnimg.cn/blog_migrate/935efdbd596208712c280cc370a0e034.png

单击鼠标右键切换:

https://i-blog.csdnimg.cn/blog_migrate/04e612ed74199d0aaa58f69c20484133.png

2.新建分支:

注意:在新建分支时,我们需要在哪个主分支的基础上新建分支必须先要切换到对应的主分支才能到该主分支上创建分支,如下我们要在master分支上创建一个feature-0613分支:

https://i-blog.csdnimg.cn/blog_migrate/8a6da8a9377d5735b63c4b1d89e6e765.png

https://i-blog.csdnimg.cn/blog_migrate/f48244468ec25ec8463dd0dc8f01a757.png

3.合并分支:

**注意:在合并代码之前我们都需要将需要合并的分支拉取到最新状态(避免覆盖别人的代码,或者丢失一些重要文件)!!!!!

在master分支上点击右键,选择合并feature-0613至当前分支即可进行合并:

https://i-blog.csdnimg.cn/blog_migrate/0b80037ac7c2d9c5bad11e9c8973f49b.png

分支合并成功:

https://i-blog.csdnimg.cn/blog_migrate/845eaea46e596d4631693b92b5cbdfcf.png

SourceTree代码冲突解决:

首先我们需要制造一个提交文件遇到冲突的情景:

在SoureceTree中在Clone一个新项目,命名为pingrixuexilianxi2,如下图所示:

https://i-blog.csdnimg.cn/blog_migrate/390d8e55a95658297081c56401c83553.png

我们以项目中的【代码合并冲突测试.txt】文件为例:

https://i-blog.csdnimg.cn/blog_migrate/757f4b8bf15cfb2477affb549c8313a4.png

在pingrixuexilianxi2中添加内容,并提交到远程代码库,添加的内容如下:

https://i-blog.csdnimg.cn/blog_migrate/aba63f69543ddcefd944847a570f68a2.png

在pingrixuexilianxi中添加内容,提交代码(不选择立即推送变更到origin/master),拉取代码即会遇到冲突:

https://i-blog.csdnimg.cn/blog_migrate/0de7f82b4579d21b45139731e126f948.png

https://i-blog.csdnimg.cn/blog_migrate/e5a7396ab26c198f567ec9ae37e55fdf.png

https://i-blog.csdnimg.cn/blog_migrate/301e4fd58f25e48b6affa8a97b2aeeb9.png

冲突文件中的内容:

https://i-blog.csdnimg.cn/blog_migrate/f2d99abd56190edc37d4f41480653e93.png

直接打开冲突文件手动解决冲突:

由下面的冲突文件中的冲突内容我们了解到:

<<<<<<< HEAD
6月19日 pingrixuexilianxi添加了内容
=======
6月18日 pingrixuexilianxi2修改了这个文件哦
>>>>>>> a8284fd41903c54212d1105a6feb6c57292e07b5
<<<<<<< HEAD到 =======里面的6月19日 pingrixuexilianxi添加了内容是自己刚才的Commit提交的内容
======= >>>>>>> a8284fd41903c54212d1105a6feb6c57292e07b5里面的6月18日 pingrixuexilianxi2修改了这个文件哦是远程代码库更新的内容即为pingrixuexilianxi2本地代码库推送修改内容)。

手动冲突解决方法:

根据项目需求删除不需要的代码就行了,假如都需要的话我们只需要把 «««< HEAD=======     »»»> a8284fd41903c54212d1105a6feb6c57292e07b5都删掉冲突就解决了(注意,在项目中最后这些符号都不能存在,否则可能会报异常)。

最后将冲突文件标记为已解决,提交到远程仓库:

https://i-blog.csdnimg.cn/blog_migrate/34ea3e1100f6e196d05532372178997c.png

采用外部文本文件对比工具Beyond Compare解决冲突:

SourceTree配置文本文件对比工具Beyond Compare:

工具=>选项=>比较:

https://i-blog.csdnimg.cn/blog_migrate/260e34ea60e7be0be3ea3992471384a7.png

https://i-blog.csdnimg.cn/blog_migrate/5e2baab15e2425d089030a80484556f6.png

使用Beyond Compare解决冲突:

Beyond Compare使用技巧:

官方全面教程:https://www.beyondcompare.cc/jiqiao/

SourceTree打开外部和合并工具:

https://i-blog.csdnimg.cn/blog_migrate/c5962ae28821ecb939c07eb8f620449c.png

注意:第一次启动Beynod Compare软件需要一会时间,请耐心等待:

https://i-blog.csdnimg.cn/blog_migrate/af05654cfe93c63371051f1a58c57ed4.png

Beynod Compare进行冲突合并:

https://i-blog.csdnimg.cn/blog_migrate/9bdd66ada0b459e8c5d5f75937d04ed3.png

点击保存文件后关闭Beynod Compare工具,SourceTree中的冲突就解决了,在SourceTree中我们会发现多了一个 .orig 的文件。接着选中那个.orig文件,单击右键 => 移除,最后我们推送到远程代码库即可:

https://i-blog.csdnimg.cn/blog_migrate/dcc025b16b53e4077afed0463769e044.png

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)状态。

Git分布式版本控制器常用命令和使用:

当然作为一个有逼格的程序员, 一些常用的命令我们还是需要了解和掌握的,详情可参考我之前写过的文章:

SourceTree如何提交PR(Pull Request):

Pull Request提交相关操作参考该篇文章:

1、fork 项目:

https://i-blog.csdnimg.cn/blog_migrate/ad5eebbf4d6b9a2d05071d74190ba1d2.png

2、克隆本地

https://i-blog.csdnimg.cn/blog_migrate/ad06c0f2af77a125e3678502db6af62e.png

打开Git Bash输入仓库克隆命令:

git clone https://github.com/liangtongzhuo/taro-ui.git

3、根据文档创建分支

拖进 SourceTree,基于 dev 创建分支如下图:

https://i-blog.csdnimg.cn/blog_migrate/a4a948067d785df84a3c435c4a2154cb.png

4、提交修改的代码到远程代码库

文章上面已经提到了使用SourceTree提交的相关操作,可参考:

(或者Ctrl F:SourceTree代码提交)

当然也可以使用git命令提交:

git add .  --提交所有修改的文件到本地暂存区
git commit -m"fix(dos):修正文字 "   --提交到本地代码库
git push  --提交到github中的远程代码库

5、提交 Pull Request

第四步提交成功后,进入原来fork的仓库,点击 Compare

https://i-blog.csdnimg.cn/blog_migrate/ec71ee7dceb6131efaaa5d3843bf4d0d.png

提交你的说明,选择合并的分支即可,剩下等待合并。

https://i-blog.csdnimg.cn/blog_migrate/398757405ee56407dc8c15defbda3bf4.png

https://i-blog.csdnimg.cn/blog_migrate/ea96f5df2479a500cff3d08b3e56eb5c.gif

  • 了解作者&获取更多学习资料

  • 加入DotNetGuide技术交流群

  • 程序员常用的开发工具软件推荐

  • C#/.NET/.NET Core推荐学习书籍
  • C#/.NET/.NET Core学习视频汇总
  • C#/.NET/.NET Core优秀项目框架推荐
  • C#/.NET/.NET Core面试宝典(基础版)
  • C#/.NET/.NET Core学习、工作、面试指南
  • 值得推荐的.NET/.NET Core ORM框架资源汇总

  • 值得推荐的ASP.NET Core开发者学习指南路线图

  • 值得推荐的.NET干货实战教程分享的编程知识星球

https://i-blog.csdnimg.cn/blog_migrate/7534d6d44ce5034732b13c3a7a3850c4.gif

https://i-blog.csdnimg.cn/blog_migrate/50e1d960d85f9d99a0b3fa1dfd91b220.jpeg


学习是一个永无止境的过程,你知道的越多,你不知道的也会越多,在有限的时间内坚持每天多学一点,你一定能成为你想要成为的那个人。不积跬步无以至千里,不积小流无以成江河!!!

https://i-blog.csdnimg.cn/blog_migrate/a3633689abe1e3a78baea4fd768fcd58.gif

See you next good day

https://i-blog.csdnimg.cn/blog_migrate/7c1ef0779386fd466b53ec98c8b71174.gif