git pull怎么对比与远程分支的冲突_Git管理神器SourceTree使用详解

ad75c9a324338af8bf5e602847abfc7c.png

前言:

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

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

https:// blog.csdn.net/hmllittle koi/article/details/104504406/

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

SourceTree Atlassian账号注册和登录教程​www.cnblogs.com
7e36fe7c537c497ea6a745192161d7c6.png

连接Gitee or GitHub,获取代码:

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

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

全面概述Gitee和GitHub生成/添加SSH公钥 - 追逐时光者 - 博客园​www.cnblogs.com
dfa7b47144f7d2a0d7f733740db1fe7c.png

在SourceTree中添加SSH密钥:

工具=>选择:

52271601a8897657d46e690ab9511654.png

52271601a8897657d46e690ab9511654.png

添加SSH密钥位置:C:Usersxxxxx.sshid_rsa.pub:

eaa1ec493ca57689335dd596097cbd5a.png

SSH客户端选择OpenSSH:

c877a2fc9b4c98966958dc6b531eb617.png

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

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

2948a29e515db5a69b2597d8c3d0dde0.png

4c2667bbae4699ab05ad97d5dc6f3ca2.png

0087739010645f06762d5d2b39409618.png

SourceTree设置默认工作目录:

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

设置SourceTree默认项目目录:

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

1b10f68386e1795543568250eaf54a4d.png

SourceTree代码提交:

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

0fa9b7e48111421f49d85664ba3b0709.png

52596b5f1e802d7bdf27c24b3279b952.png

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

f8a78491eb745fc991db9f3a74f6c9b7.png

3.将暂存区中的代码提交到本地代码仓库:注意:多人同时开发项目的时候,不推荐默认选中立即推送变更到origin/develop,避免一些不必要的麻烦!

5f964b9c04997704ad2a740d3211dfa8.png

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

8c1be40da6521730dc9dcb17b0ac7f7a.png

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

b6939c9bf34020d96cf8c6f83f6f9734.png

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

912aa43bd8d7dbf324b0fc50c6a9f319.png

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

650e4cbfa8e1aae6340635204d65cf37.png

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

1.分支切换:

双击切换:

fa8087bd4805de7d79f5bfc81657bfb4.png

单击鼠标右键切换:

5f838e4d87ca74f62ef0492e47752e20.png

2.新建分支:

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

96249c3c3ab60bb864ecdc2dc6273b1e.png

b5621ecf86d69a2df35c7adab9bfe7de.png

3.合并分支:

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

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

68debddcdb92fa32e71491cc7a4d9165.png

分支合并成功:

86d942e3adc4ffe9321d199090406ba6.png

SourceTree代码冲突解决:

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

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

37bcbe707f82afeff2fb762f94ccf510.png

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

4010cd67909e166bc248c789e8d82f9c.png

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

32f7fbf90d94affcb6570739ed6b209b.png

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

90e6b191a16589d1775ed8f048a121bd.png

e987e67799705c4c716209aba55aac29.png

9bdf8ae3e4014c61af20b0223a63029e.png

冲突文件中的内容:

fabfe17c86f22352b09e4c7e7aee0ede.png

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

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

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

手动冲突解决方法:

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

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

b9b2a21cee64b8b357a0cbbe6a01e1f5.png

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

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

工具=>选项=>比较:

f4b3548458058ac4670a29673e34b157.png

d795cc7deb68fe53de46aa9a63a0ca37.png

使用Beyond Compare解决冲突:

Beyond Compare使用技巧:

官方全面教程:

使用技巧-Beyond Compare中文网站​www.beyondcompare.cc

SourceTree打开外部和合并工具:

523064491a5133ad32b622451a3bcc6e.png

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

dda10ddd7e75896d78a3f02552ca84ea.png

Beynod Compare进行冲突合并:

e6ff76ae37adec9f8dabdf7d83e04861.png

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

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

文章首发地址:

SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决) - 追逐时光者 - 博客园​www.cnblogs.com
c40af89b10cc83dd8adb20344613074a.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值