一、准备工作
1.1、安装Sourcetree项目开发工具
请参考如下连接进行操作:
安装Sourcetree项目开发工具 https://coffeemilk.blog.csdn.net/article/details/123146447?spm=1001.2014.3001.5502
1.2、GitLab上配置SSH Key
请参考如下连接进行操作:
GitLab上配置SSH Key https://coffeemilk.blog.csdn.net/article/details/122732114
1.3、给Sourcetree添加SSH key
![](https://img-blog.csdnimg.cn/73c57a57225542c6818e6ab91ff7aab9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_18,color_FFFFFF,t_70,g_se,x_16)
?注意:SSH密钥的路径一般是【C:\Users\自己电脑的用户名称\.ssh】
![](https://img-blog.csdnimg.cn/592dbc40ce1b442bbd67b1dbf403682c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
1.4、设置Sourcetree克隆项目的默认存储目录?
![](https://img-blog.csdnimg.cn/2f469f6e00fa4d049c41738e384beb2c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
?二、Sourcetree中连接远程仓库操作项目(以GitLab为例)
2.0、克隆项目
【克隆】即从远程仓库的URL链接加载一个与远程仓库一样的本地仓库。
2.0.1、登陆GitLab复制需要克隆的项目链接
![](https://img-blog.csdnimg.cn/8e234949c23d4ab8be1f7a16c58bdf4d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
注意:如果要使用项目的SSH连接克隆项目,则首先需要按照上面《一、准备工作中的【1.2、GitLab上配置SSH Key】、【1.3、给Sourcetree添加SSH key】进行操作后才能正常使用》 。
2.0.2、Sourcetree克隆面板介绍
![](https://img-blog.csdnimg.cn/5ccc411d17d34a4b81b169f53fbfdffc.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/d184d1ee19ac41e4b3be364a93282213.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16) ![](https://img-blog.csdnimg.cn/82f74cb8991f49dfabc90a5f0ff16180.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
2.1、拉取、获取和提交、推送项目
2.1.0、将修改的代码提交到暂存区域
![](https://img-blog.csdnimg.cn/66754c47757740739b1cf26947159d85.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
注意:这里的添加到暂存区类似于执行:git add 文件操作?
?2.1.1、将暂存区的内容提交到本地代码仓库
?2.1.2、拉取更新本地的项目仓库
?【拉取】就是将远程Git仓库所有信息都同步到本地仓库(包括提交记录、分支、标签等内容);而且会自动合并代码/分支。
【获取】就是将远程Git仓库所有信息都同步到本地仓库(包括提交记录、分支、标签等内容);但是不会自动合并代码/分支,需要自己手动合并。
![](https://img-blog.csdnimg.cn/ba7bf775990e4506967717037cd82f8a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/3924ece28fdf4ff2ad1674bf7ae5ada7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
2.1.3、拉取完成后再将本地的修改推送到远程仓库?
![](https://img-blog.csdnimg.cn/666f5c8f09e243f7b8d7ee9049ef2763.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/e8f1272b450648e39ee77274e4180a96.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
?2.1.4、登陆GitLab上查看推送结果
![](https://img-blog.csdnimg.cn/ffbbfe9dce9b4c3cb7b6ba6b1ec92f6c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/948fc3b3474a447aa779e51918032bf1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
2.2、新建、切换、合并分支
2.2.1、新建分支
![](https://img-blog.csdnimg.cn/5edc150da6ce49079a109ce6b3fc2d21.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
?2.2.2、切换分支
![](https://img-blog.csdnimg.cn/0d9502e9c5604a9bb6d836703556b7d6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
?![](https://img-blog.csdnimg.cn/81c79ff3b62047fcbd26be4e0b5e78e3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_13,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/6b6f1ca228eb4f399f08b773b2a4c3c2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
2.2.3、合并分支
注意:在合并分支前,必须将需要合并的分支拉取到最新的状态(这样操作可避免丢失重要文件,或覆盖其他成员的代码)。
示例:想要将本地新建的【Developer】分支合并到【Develop】分支,操作如下:
①将被合并的分支拉取到最新的状态;
②选择需要合并的分支后点击鼠标右键选择【合并Developer至当前分支】
![](https://img-blog.csdnimg.cn/45fe66417a0042da9c2f3b62e792e720.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
?![](https://img-blog.csdnimg.cn/c24f57c905544f549c50c221ca9d7587.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_14,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/53dde1b7135c43ce876ff34d7be726e3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
?分支合并完成后在推送
![](https://img-blog.csdnimg.cn/02a059f1d4b3491fa07f6c701b435eff.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
?2.3、解决冲突
2.3.1、出现冲突的情况
? ? 出现冲突的情况:是有不同的项目成员对同一个项目文件进行了修改,其中一个成员提交了修改到远程仓库,另一个成员修改完成后拉取时就会报错(出现冲突)。
2.3.2、解决冲突
成员在提交了自己的文件修改到本地仓库后,在推送到远程仓库前拉取时,提示冲突,需要解决如下图所示:
![](https://img-blog.csdnimg.cn/074e1d91531c48ccb9d8946f4a6cc1d1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
?手动解决办法如下:
①点击【未暂存文件】下的文件打开查看,如下图所示:
![](https://img-blog.csdnimg.cn/2fc855c31367411f9fd8a614414304e7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
?②建议是保留远程仓库的冲突内容,然后将自己新增的内容添加上,如下图所示:
![](https://img-blog.csdnimg.cn/45bbc34ff96d47f98caa172290729a0a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
③选中该手动解决完成后的文件点击鼠标右键,选择【解决冲突】-->【标记为已解决】?即可:
![](https://img-blog.csdnimg.cn/baa654952e90402396fd8cbbd035c2c9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/27f1e6f278d74e22987f39489c4fc086.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/df861d6daf864fc6b955c9c3530bfee8.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/34b6018218004a3db5720cf7942e0d34.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54mb5aW25ZKW5ZWhMTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
三、Sourcetree中的命令说明?
Sourcetree中的命令说明
序号 | 命令 | 说明 | 1 | 克隆(clone) | 从远程仓库的SSH或URL链接下载一个与远程仓库一样的本地仓库 | 2 | 提交(commit) | 将暂存区的所有文件保存到本地代码仓库 | 3 | 拉取(pull) | 将远程Git仓库所有信息都同步到本地仓库(包括提交记录、分支、标签等内容);而且会自动合并代码/分支[git pull=git fetch+git merge] | 4 | 获取(fetch) | 就是将远程Git仓库所有信息都同步到本地仓库(包括提交记录、分支、标签等内容);但是不会自动合并代码/分支,需要自己手动合并 | 5 | 推送(push) | 将本地仓库内容同步至远程仓库,推送(push)前必须先拉取(pull)一次,确保一致(因为这样团队成员间的代码才是最新的同步状态,这样能够避免很多不必要的问题) | 6 | 分支(branch) | 可以进行创建/修改/删除分支 | 7 | 合并(merge) | 将多个同名文件合并为一个文件,该文件包含多个同名文件的所有内容,相同内容抵消 | 8 | 贮藏(git stash)? ? ? ? | 保存项目的工作现场内容 | 9 | 丢弃(discard)? ? ?? | 放弃更改,恢复文件改动/重置所有改动,即将已暂存的文件丢回未暂存的文件 | 10 | 标签(tag) | 给项目增添标签 | 11 | 工作流(git flow) | 团队协作时,每个成员都可以创建属于自己的分支(branch),在确认无误后可提交到master分支或Develop分支 | 12 | 终端(terminal) | 可以输入git命令执行 | 13 | 检出(checkout) | 可以用于切换选定的不同分支 | 14 | 添加(add) | 添加文件到缓存区 | 15 | 移除(remove) | 移除文件至缓存区 | 16 | 重置(reset) | 回到最近添加(add)/提交(commit)的文件状态 | 17 | 资源管理器 | 可以查看当前项目存放在本机的路径 |
四、在 Visual Studio 中提取、拉取和同步项目
在 Visual Studio 中提取、拉取、推送和同步 | Microsoft Docs https://docs.microsoft.com/zh-cn/visualstudio/version-control/git-fetch-pull-sync?view=vs-2022
|