Sourcetree 使用详解

文章目录

  • 前言
  • 初始界面
    • 1 本地
      • 1.1 仓库列表
      • 1.2 分支情况
    • 2 新建
    • 2.1 克隆远端仓库到本地
    • 2.2 创建远程仓库
    • 2.3 添加已经存在的本地仓库
  • 导航栏
    • 1 基础操作
    • 2 分支操作
    • 3 文件操作
    • 4 贮藏操作
  • 工作区
    • 1 文件状态
    • 2 提交历史
    • 3 搜索
  • 图谱
    • 目录树
      • 节点
      • 不同的分支
      • 分支的合并
    • 未完待续

前言

Sourcetree 是一个非常好用的git客户端, 它把在多人协作开发过程中几乎所有的git操作(包括但不限于push, pull, add, commit, merge等等)转变为更有利于提高工作效率的可视化视图结构! 本文依旧本着记录学习的目的, 同时仍然不在赘述如何下载, 怎么安装, 环境如何配置等问题, 只记录每个功能是什么、对应git什么命令、怎么用. 工欲善其事必先利其器, Sourcetree就是这样一个利器工具!我在这篇文章
中讲述了git的常用命令, 配合本文一起食用效果更佳! 开始吧, 没有什么比图更能说明问题
Sourcetree 使用详解_第1张图片
另外, 本文只介绍工具中比较常用的功能, 对于一些用的使用频率非常低的功能不再记录. 工具只是给我们用, 以提高我们工作效率的, 对于任何一个工具我们都只选最好用, 最有用的一部分即可, 而非花大量时间去研究工具. 那就丧失了使用工具的目的.

初始界面

1 本地

Sourcetree 使用详解_第2张图片

这里就是我们克隆下来的所有本地仓库, 是不是非常的直观! 如果使用命令行想看到我克隆的所有本地仓库该怎么看呢? 把大象装冰箱总共分三步, 命令行查看所有本地库需要也需要三步

  1. 打开命令行工具
  2. 切到工作目录(我这里是/Users/yangxudong/iOS)
  3. 执行ls 命令(或者 ls -a, 详细的终端命令请看这里
    )
    不仅步骤多, 而且哪有Sourcetree看起来香. 万物真香定律

1.1 仓库列表

这个比较简单, 每一行就对应一个从远端拉取到本地的本地仓库

1.2 分支情况

Sourcetree非常直观的列出了我们克隆的所有仓库在本地的情况, 不仅如此, 还同时列出了该仓库在本地的分支状态, 如图中所看到的, 其中

  • develop和feature/…展示了不同仓库所处的本地分支
  • 数字: 有两种, 分别代表本地仓库有多少个未提交的修改和远端仓库有多少个需要拉取的未同步的修改

若想在命令行查看对应的内容需要这样

  • cd到仓库目录, 执行 git branch
  • cd到仓库目录, 执行git status自己查看状态(并且无法查看远端有多少修改需要同步)

2 新建

Sourcetree 使用详解_第3张图片

2.1 克隆远端仓库到本地

Sourcetree 使用详解_第4张图片

  • 源url: 就是你的仓库地址
  • 目标路径: 就是你的工作目录
  • 名称: 你自己对仓库的命令
  • 高级选项: 可以直接检出你想检出的远端分支, 默认检出master

如果使用命令行是这样的

  • cd到工作目录
  • 执行git clone git@xxxx
  • 执行git branch 创建分支
  • 执行git checkout 切换分支(这两步使用git switch也可以)

到这你以为完了吗, 并没有! 你用命令行检出分支以后, 并没有和远端分支进行关联, 你还得执行如下操作, 但是sourcetree就非常的友好, 在你点击克隆按钮时, 就自动的和远端仓库进行了关联

  • git push --set-upstream origin branch_name 关联分支

2.2 创建远程仓库

这个其实我们不怎么常用(我本人一次没用过), 一般情况下, 你不一定有创建仓库的权限, 大多数情况下, 你进入公司开始干活时远端仓库都已经创建好了-.-! 并且此操作还需要关联远端账号, 比较繁琐, 在此不做讲述

2.3 添加已经存在的本地仓库

如果你用命令行方式把远端的代码地址克隆到了你的工作目录, 此时你不想用git了, 那这个操作可以把你工作目录内的仓库地址直接添加到sourcetree中, 它会自动获取仓库的.git目录, 然后进行管理

导航栏

Sourcetree 使用详解_第5张图片

1 基础操作

1.1 提交
显示本地有多少修改, 对应命令行

  • cd到工作目录
  • git status

1.2 拉取
显示远端仓库有多少更新, 并把信息同步至本地仓库, 对应命令行

  • git pull, 但是命令行在拉取之前不显示远端修改数量
  • git pull相当于git fetch + git merge
    1.3 推送
    显示本地commit后要等待推送到远端仓库的修改和数量, 对应命令行
  • git push

1.4 抓取
从远程仓库获取信息并同步至本地仓库, 对应命令

  • git fetch

2 分支操作

新建: 对应命令行

  • git checkout -b 新建分支
  • git push origin branch_name 推送到远端
  • git push --set-upstream origin branch_name 和远端建立关联

删除: 对应命令行

  • git branch -d 删除本地分支
  • git push origin --delete 删除远端关联分支

合并
可以一条一条合并, 也可以合并所有, 对应命令行

  • git merge

3 文件操作

finder
显示文件夹位置

终端
终端显示

设置
我主要用到的是配置.gitiignore忽略文件

4 贮藏操作

如果你修改了内容但是并不急着提交、上传分支到远端, 此时你可以选择贮藏, 其实就相当于给存起来了, 想用的时候再取;需要注意的是上面的提示: …并且返回一个干净的工作区状态!
这里的意思是: 你使用贮藏后, 你的本地修改就消失了, 你的修改被放在了贮藏中, 当你想要的时候再取就可以(我很少用…)
Sourcetree 使用详解_第6张图片

工作区

1 文件状态

显示本地仓库的文件状态, 包括修改内容, 修改数量, 前后对比, 已暂存的, 未暂存的

  • 已暂存: 对应 git add.后的, 位于暂存区
  • 未暂存: 对应 git add.前的
  • 右侧: 对应 git diff
  • 底部: 提交描述, 对应git commit -m " 这里是提交描述 "

2 提交历史

详细的更显所有的提交,

  • 你提交的和你队友提交的
  • 每次提交的内容
  • 分别改了哪些东西
  • 提交时间和提交人
    专业程序员三连:这辣鸡代码谁写的! 不是我啊! 这哪个傻x写的!
    此时, 提交历史 专治甩锅, 你懂的!
    Sourcetree 使用详解_第7张图片

3 搜索


如图, 当你在历史中感觉内容太多一脸懵逼的时候, 配合搜索会检索到所有跟你检索关键字相关的提交, 双击之后会定位到历史中的提交记录位置, 配合历史一起食用, 专治各种甩锅, 疗效非常好, 效果极佳, 但是建议慎用以免引发降维打击!

图谱

敲黑板, 看这里, 重点! 重点!! 重点!!!
Sourcetree 使用详解_第8张图片

目录树

这里只以我本地状态为准, 注意 分支的颜色并不是固定不变的, 也就是

  • 每条颜色的分支并不固定代表某个分支!
  • 每条颜色的分支并不固定代表某个分支!!
  • 每条颜色的分支并不固定代表某个分支!!!

节点

在图中, 我们可以看到不论哪一条线, 也就是不论哪一条分支, 上面都会有一个个圆点, 这个圆点就是我们说的节点, 每个节点对应这一次提交, 每个 节点后面都有一行文字, 这行文字是对这次提交的描述, 相当于
git commit -m “描述” ---- 此描述就是这行文字

不同的分支

灰色线
这里指的是我本地当前分支为提交的, 看介绍uncommitted change 未提交的修改
蓝色线
第二行, 可以看到有两个标签, 第三行有 “红包消息”、"打点测试"等, 代表我在这个分支上的提交记录.

  • orgin/feature/… 代表此分支在远程的路径
  • feature/… 代表此本地分支

红色线
在这里插入图片描述
这里是dev分支, 在第三行我们可以看到 “Merge branch “develop” into " xxx分支”"这样一句描述, 这句话的意思是把dev分支的内容合并到了当前分支. 为什么这么做呢? 因为大多数情况下, 协同开发, 一般会在自己的分支开发功能, 开发完成之后一般会合并到dev分支, 此时当你开发的过程中假设需要用到A的代码, 而别人的代码在A自己的分支上, 这时就可以通过如下三步来协作

  • A把他本地的代码合并到dev
  • 你从dev拉到本地
  • 把dev代码合并到你的开发分支

橙色线、绿色线
和蓝色线一样, 这两条分支仍然是你本地创建且推送到远端的一个分支. 我们可以看到, 这里也有一条合并记录, 把绿色分支合并到了橙色分支. 需要注意的是, 这里是在你本地做的合并, 那为什么本地需要合并不同的分支呢? 其实和协同开发你需要别人的代码一样的, 即本地橙色分支的开发需要用到本地绿色分支的代码. 本质上来说就是你需要哪里的代码, 就把哪里的代码想办法合并到当前来使用.
比如我这里, 在橙色分支做性能优化, 而绿色分支我替换了UIWebview , UIWebview 是同步的, 比较耗时, 也是我当前要优化的内容之一, 因此我就把替换UIWebview这个分支合并到了性能优化这个分支中.
在这里插入图片描述
同时 , 这里代表这绿色分支是从蓝色分支检出的
在这里插入图片描述
到这里为止, 上面几条分支都是本地创建的, 看起来并不是很复杂, 这些分支有些是你创建的, 有些是别人创建的, 看起来比较简单直接, 一目了然. 接下来我们来看看更复杂一点的, 各种分支合并

分支的合并

先看一张图. 注意请不要关注分支颜色, 我们在这只看合并
Sourcetree 使用详解_第9张图片
懵了吗? 我也很懵, 这是什么啊 , 这一堆线是啥啊? 不要慌, 看我, 假装镇定
Sourcetree 使用详解_第10张图片
不慌, 我一条一条说
主线
呈现你眼前的唯一的一条直线就是主线, 他是什么: 是项目第一次提交和你最近的一次提交连接成的最长的直线. 主线可以衍生出支线(n个), 支线又可以衍生出更多的支线(n).
信吗? 不信就一直翻翻看-.-

支线
除了主线以为都是支线, 不同的是这个支线是从主线分离出来的还是从别的支线分离出来的, 什么情况下会产生支线

  • 你检出了新分支
  • 同一分支不同仓库的commit

未完待续

我是个Coder界的小学生, 如有不足, 万望不吝指教

转载请注明作者和链接哦!

你可能感兴趣的:(工具使用,iOS开发)