当前位置: 代码迷 >> 综合 >> 【SourceTree】项目版本控制
  详细解决方案

【SourceTree】项目版本控制

热度:2   发布时间:2023-12-14 09:23:58.0

目录

  • 一、下载
  • 二、基本概念
  • 三、本地使用
    • 3.1、仓库的创建
    • 3.2、修改、提交文件
    • 3.3、时空穿梭
      • 3.3.1、回顾历史:回到某个版本,不删除之后的版本
      • 3.3.2、改变历史:回到某个版本,删除之后的版本
    • 3.4、平行宇宙
      • 3.4.1、创建分支
      • 3.4.2、普通合并
      • 3.4.3、变基
      • 3.4.4、遴选
    • 3.5、一些常用的基本技巧
      • 3.5.1、合并版本
      • 3.5.2、最常见的异常:冲突
      • 3.5.3、忽略文件、不加入版本管理
      • 3.5.4、文件内容比较
  • 四、远程连接
  • 五、远程同步
  • 六、团队合作
  • Reference

一、下载

官网正常下载安装即可.

二、基本概念

在这里插入图片描述

简单介绍一下,SourceTree是和Github一样的一个基于Git的版本控制软件。其他基本概念:
在这里插入图片描述
在这里插入图片描述

三、本地使用

一个人开发,一台主机,不需要同步内容。

3.1、仓库的创建

先新建一个工作文件:workspace
再打开下载好的SourceTree软件:
在这里插入图片描述
点击Create,加入刚才新建的工作文件workspace:
在这里插入图片描述
再查看刚才的工作目录,发现新增隐藏文件:.git(这个文件存放了当前文件的各个版本文件的信息)。
在这里插入图片描述
到此本地仓库就创建完毕了。

3.2、修改、提交文件

比如在工作空间中创建文件:number.txt
在这里插入图片描述
这个时候SourceTree中就会出现变化
在这里插入图片描述
在number.txt前出现一个问号,表示当前这个新建的文件为未管理文件。
这个时候我们点击加号,即可将文件加入暂存区

在这里插入图片描述
在这里插入图片描述
这个过程其实就算将文件从文件目录(工作区)存入仓库中的暂存区。
同理点击后面的减号也可以将文件从仓库中的暂存区重新添加到文件目录中,这里就不演示了。

最后在描述中添加上当前操作的日志信息,再点击提交,即将这个文件从仓库中的暂存区添加到储存区。
在这里插入图片描述
并且可以通过历史查看提交的信息。文件前面的小圆圈(master)表示当前工作区的版本。
在这里插入图片描述
同样当修改当前版本文件的内容后,同样操作也可以再提交修改后的版本文件。

当修改了文件,软件左上方会出现一个待提交提醒,同样在未暂存(工作区 文件目录)中也会出现修改了的状态文件,点击这个文件,会在右边显示修改的内容。
在这里插入图片描述
同样添加到暂存区,编写日志信息,点击提交:

在这里插入图片描述
提交记录立即更新,空心圆前缀表示当前工作区版本文件。
在这里插入图片描述
到这文件提交操作结束。

3.3、时空穿梭

3.3.1、回顾历史:回到某个版本,不删除之后的版本

打开历史可以看到所有的历史版本,空心圆对应的版本是当前工作区的版本:
在这里插入图片描述
想要查看某个历史版本,只要点到对应的历史版本,再双击,弹出框
在这里插入图片描述
再点击确认,可以看到,当前工作区版本变成了相应的历史版本。注意这里的HEAD和前面的空心圆环的作用一样,都表示这个文件是当前工作区的版本文件。
在这里插入图片描述
打开文件也可以看到,变成了双击的历史版本:
在这里插入图片描述
到这里说明了我们已经成功的穿越到了某个历史版本,且不会改变这个历史版本之后的一些版本。

3.3.2、改变历史:回到某个版本,删除之后的版本

鼠标右键点击某个版本,选择【重置当前分支带此次提交】
在这里插入图片描述
然后选择混合合并或者强行合并。
混合合并是删除某个版本之后的所有版本,但是某个版本中仍然保留之后的版本数据,你可以在这进行修改;
强行合并是直接删除某个版本之后的所有版本,且某个版本中只保留这个版本的数据,也就是说这个版本之后的数据会永远消失,没用重来的机会。

所以这里建议是使用混合合并的方式,万一后悔了呢,也可以补救。
在这里插入图片描述
如混合合并:
在这里插入图片描述
仓库里已经删除了,但是默认工作区里还是保留的。
在这里插入图片描述
如果要在这个基础上继续修改就直接在工作区中修改即可,如果要在当前master的基础上继续修改,直接丢弃这个未暂存文件即可。
在这里插入图片描述
在这里插入图片描述

如图,当前文件内容未master版本,彻底删除了之后的所有版本。这个效果和强行合并的方式一样。
在这里插入图片描述

3.4、平行宇宙

在个时刻下,我们可能产生2个思路,为了让这两个思路写的版本不冲突,我们可以在master的基础上建立一个开发分支dev,当开发分支开发到一定的版本,测试的差不多了再合并到主分支master上。

3.4.1、创建分支

第一步点击上面分支按钮,输入分支名,点击创建分支。
在这里插入图片描述
这个时候他就会在master的同一级上建立一个dev分支
在这里插入图片描述
此时就可以对工作区进行编辑你的idea了,如图新建了一个文件,此时dev分支和master分支已经分开了:
在这里插入图片描述
在这里插入图片描述

3.4.2、普通合并

在这里插入图片描述
第一步切换到master版本,双击master版本即可:

在这里插入图片描述
第二步再点击上面的合并,选择要合并的分支版本,勾选下面两个选项,点击确定:
在这里插入图片描述
可以看到master变成了选择的分支版本,分支中的版本已经挪到了主分支上了,且创建了一个新的节点并提交合并:

在这里插入图片描述

3.4.3、变基

把开发dev分支变成主分支。
在这里插入图片描述
之前的操作和普通合并一样,只是在下面的选项添加上变基代替合并:
在这里插入图片描述
结果如下,会将开发分支dev的所有版本整体的全部复制到主分支master上(即将开发dev分支变成主分支master):
在这里插入图片描述

3.4.4、遴选

有时候并不想把开发分支dev的所有版本都加到master主分支上,就可以通过遴选的方式选择要的开发分支dev上的某些版本到master主分支上。
在这里插入图片描述
首先切换到master分支:
在这里插入图片描述

如图,加入我只想将开发dev分支上的apple那个版本加入到主分支master上,只需要右键apple分支再点击遴选(可以多选)。
在这里插入图片描述

弹出确认框,点击确定即可。

注意:当将分支上测试完毕的代码移动到master上,为了方便管理,可以将没用的分支代码删除,左侧对应分支右键删除即可。

3.5、一些常用的基本技巧

3.5.1、合并版本

有时候分枝上版本太多,太乱,需要对一些版本进行合并比如如下,假如我们要将apple和orange合并,点击fruit.txt再右键选择【交互式变基】:

在这里插入图片描述

3.5.2、最常见的异常:冲突

在这里插入图片描述
如图创建分支dev2,添加lemon,再合并到master上:
在这里插入图片描述
再在分支dev上添加coco:

在这里插入图片描述
此时如果将dev也合并到master会报错(合并冲突):
在这里插入图片描述
可以分支上产生了一个未提交的冲突,且在工作区间中也会显示这个冲突,这个时候最好的解决方法是手动的直接在工作区间中自己选择需要保存哪个分支的版本,删除不需要的版本。
在这里插入图片描述
手动保存好自己想要的版本:
在这里插入图片描述
再右键文件,选择【解决冲突】中的【标记未已解决】:
在这里插入图片描述
然后再正常的提交即可:
在这里插入图片描述

3.5.3、忽略文件、不加入版本管理

如图,如果我新建了一个文件,这个文件的内容几乎不变化,不希望他进行版本控制
在这里插入图片描述
那么我们可以右击这个文件选择忽略:在这里插入图片描述
选择自己要忽略的类型,点击确定:

在这里插入图片描述
这个时候就会产生一个忽略文件.gitignore,里面保存着所有需要忽略的文件名:
在这里插入图片描述
再将忽略文件提交即可:

在这里插入图片描述
下次要忽略什么文件,可以直接在.gitignore中填写对应的文件名即可。

extra.txt 忽略workspace下所有叫extra.txt的文件(针对特定的文件)
*.dll workspace下忽略所有以dll结尾的文件(针对某一特定类型的文件)
/abc 忽略workspace/abc文件夹下的所有文件(针对某一文件夹下的所有文件)

3.5.4、文件内容比较

文件对比工具: Beyond Compare 中文版.

四、远程连接

未使用过,以后更新

五、远程同步

未使用过,以后更新

六、团队合作

未使用过,以后更新

Reference

BiliBili: Git/SourceTree版本管理.