如何使用sourceTree?

为什么要用sourceTree?

某一模块的功能我做出来,下一个功能我不一定能顺利做出来,在做这个有挑战的功能前,我想存个档,这样万一做不出来,在soureceTree上点击“丢弃”就能恢复到之前存档的状态,要比自己去删代码要轻松很多。用sourceTree,代码写到一个阶段,就提交下,soureTree是图形界面,我能看到我对代码都做了什么。心里踏实,什么框架、库、API啦也敢去试。写代码尝试是避免不了的。

如何使用?

修改代码前

克隆

克隆

检出

  • 检出是什么意思?
    代码克隆到本地电脑上,可能克隆的是master分支。但是,有可能master分支上没有代码,代码都被提交到dev分支上了。
    所以,我要把dev分支上的代码克隆到我的电脑上,并且本地代码切到dev分支上。我理解的检出就是这个意思
  • 检出步骤
    1. 右击某一远程分支
    2. 检出远程分支
      检出

新建分支

  1. 双击dev分支,代码切到dev分支上(新建的分支的代码是拷贝这个分支的)
  2. 鼠标在“分支”二字上右击=> 新建分支
  3. 输入我的分支名=>新建分支
    新建分支
    新建分支
    新建分支

拉取

大家团队开发同一个项目,别人提交了新的代码到远程仓库。这时候我本地的代码不是最新的,要拉取远程最新代码。
修改代码后_拉取

合并别的分支的代码到我的分支上

就是将两个分支的代码合并,修改的是我的分支的代码。
合并

在我的分支上修改代码

修改、提交代码

  1. 代码切到Q_dev分支上(我新创建的自己的分支)
  2. 打开编辑器,修改代码,保存
  3. 打开sourceTree,点击工作副本,发现代码已经改变了,勾选要提交的代码
  4. 点击提交=>写提交信息,描述对代码做了什么改动=>提交
    新建分支
    新建分支
    新建分支

修改代码后

在我的分支上修改代码,完成了某一个功能,我想把代码推送到远程分支,要进行下面这一系列操作
假设dev是公共分支,Q_dev是我自己的开发分支

  1. 提交Q_dev分支代码
    不提交切不了分支,操作步骤见『修改、提交代码』部分
  2. 切换到dev再次拉取代码
    可能在你开发的过程中,远程仓库的代码被别人修改了
    修改代码后_拉取
  3. 双击切换到Q_dev分支,将dev分支上的代码合并到Q_dev
    为什么?因为合并代码可能会冲突,冲突了要修改本地的代码,将本地的代码合并,合并会出错,出错了反正是在你的分支上,你自己想办法。要是在dev分支上合并,出错了就有可能影响别的同事提交代码了。
    操作步骤见『合并』部分
  4. 再次切到dev分支,将Q_dev分支上的代码合并到dev
    这时候的代码已经在Q_dev分支上合并好了,所以再次合并到dev的时候就不会冲突了。
  5. 将本地dev分支的代码『推送』到远程
    修改代码后_推送

碎碎叨叨

『git分支』是什么?

一个git仓库可以新建很多个分支,git仓库有个“.git”的隐藏文件夹,记录各个分支的状态。虽然整个仓库只有一个文件夹,但是切换到不同分支,文件夹内的代码是不同的。

某一个功能代码写好了,要写下一个功能,但是心里没底?

  1. 修改代码前,确认代码已经被提交(表示已经存档)
  2. 修改代码后,打开sourceTree,点击工作副本,查看文件状态
  3. 点击“丢弃”
  4. 选中要丢弃的文件,丢弃更改,没有提交的文件会被全部丢弃掉
    新建分支
    新建分支

    某个功能代码写的不成功,想还原到上一个commit重新开始?

  • 如果新写的代码还没有提交,直接用sourceTree『丢弃』新写的代码
  • 也可以使用回滚功能,看Git客户端SourceTree回滚到远程仓库和切换分支这篇教程
  • 如果新写的代码已经提交了,那么可以使用『重置代码到当前分支』功能
    • 『重置代码到当前分支』的意思是取消某一提交节点之前的所有提交,这时候我可以点击『丢弃』,代码就恢复到某一提交节点了。这个功能有危险,慎用。
    1. 切换到『当前分支』,避免干扰
    2. 在某一条提交信息上右击,『重置代码到当前分支』
      新建分支

      就某一功能写了些代码,但是没有完成,不愿意提交代码。但是不提交代码又不能切分支,怎么办?

  • 我们有可能遇到这个情况:想研究下公司的代码,自己添些注释。所以要新建个自己的分支,在新建的分支上写一些注释。有时候又想切到公司的分支上查看代码。这时候,要么提交代码,要么将代码暂存,否则切不了分支。
  • 暂存是什么意思?
    暂存的意思就是将代码新修改的部分临时保存起来,这时候如果打开文件,会发现文件恢复到修改之前的状态了。
    如果想把文件修改到恢复到修改后的状态,可以『应用缓存区』
  • 如何使用暂存功能?
    • 暂存
      1. 修改文件后,打开sourceTree,点击工作副本,勾选文件,将文件保存到暂存区
      2. 点击暂存,写暂存文件名,确定
      3. 在暂存目录下,会看到刚暂存的文件(这时候就可以切换分支了)
        暂存
        暂存
        暂存
    • 应用暂存区
      1. 在暂存的文件名上右击,『应用暂存区』
      2. 勾选“应用后删除”,点击ok,应用暂存
        暂存
        暂存

        我想研究下公司的代码,自己写一些注释或者console.log,该怎么做?

        新建个分支,在新建的分支上修改代码,暂存,此时我写的一些注释被存起来,git『工作副本』的状态是nothing to commit,可以切到公共分支查看代码。再切回到自己的分支,『应用暂存区』就又能看到自己的注释了。

        代码合并冲突了,怎么做?

  1. 打开编辑器将冲突解决
  2. 再次点击提交
    解决冲突01
    解决冲突02

    切换分支前要注意什么?

    工作副本是『nothing to commit』状态才可以切换分支,如果不是这个状态,可以『暂存』或者『提交』后切换分支

工作中sourceTree使用步骤

假设同事的代码都提交到dev分支上,假设我自己的开发分支是Q_dev

  1. 从远程拉取代码,保证代码最新。把最新的代码合并到自己的分支(Q_dev)上
  2. 在自己的分支上修改代码(Q_dev)
  3. 提交,推送(Q_dev)
  4. 切到dev分支,拉取代码(代码提交前先从远程拉取代码,防止代码冲突)
  5. 切到我的开发分支(Q_dev),合并dev到Q_dev,推送Q_dev上新合并的代码到远程Q_dev分支上
  6. 切到dev上,再合并Q_dev到当前分支(dev),提交代码,推送

    提交代码前要做的3件事情

  • git diff ,检查所有的变更
  • 跑一遍单元测试
  • 手动运行一遍所有demo

sourceTree 无法用SSH克隆克隆远程仓库?

比如用sourceTree 克隆链接是
git@github.com:eddieeddieeddiejones/jQuery.git
这种方式是用SSH克隆
SSH克隆

  • 大致原理
    我要在电脑上生成一个唯一识别码(就是一个密码),然后把这个密码添加到远程仓库,相当于远程仓库识别了这台电脑,再把这个唯一识别码添加到sourceTree,就可以用sourceTree克隆、修改、提交代码啦。
  • 解决步骤
  1. 设置SSH密钥:
    https://help.github.com/articles/connecting-to-github-with-ssh/
  2. 将本地生成的ssh密钥添加到sourceTree
    SSH01
    SSH02