SourceTree使用方法总结
SourceTree使用总结
添加仓库
mac下从url克隆:
windows下从url克隆:
抓取、获取分支信息
抓取(mac下的名字)获取(Windows下的名字)指获取服务端git库的变更信息,比如落后几个版本,超前几个版本,我们平常多人协作的项目,提交代码前需要先获取一下,如果服务端有新的提交,再拉取下别人的更改,可以减少代码冲突。(菜单栏)
拉取代码:
我先将界面分为 菜单栏、左侧栏、文件栏、变更栏、底部栏以方便下文介绍。
直接点击菜单栏的 拉取 按钮即可将远程代码变更拉取到本地。
提交代码:
正常提交
首先将未暂存的文件选中,点击后面的暂存所选;或者直接点击暂存所有。(文件栏)
在下方文本框输入本次代码变动的说明。(底部栏)
sourcetree默认不会推送到远程仓库,打勾立即推送变更到origin。(底部栏)
点提交即可(如果没有打勾立即推送变更到远程,还需手动点击菜单栏的推送)
这里我模拟一些变更,随便改点代码,然后保存,再次回到提交界面。
变更栏会包含本次所有变更,其中+代表本次增加行;-代表本次删除行;前面2个行号依次代码变更前行号,变更后的行号。为了保证代码变更尽可能的少,我们需要丢弃一些无意义的变更,如153行的删了一行dt/dt,随后又增加了一行dt/dt,造成这种现象一般是代码格式化或者不小心增加了某些空格等不可见字符导致,我们可以直接选中那2行,然后点击上方的丢弃行。
需要注意的是,丢弃不等于删除,丢弃所丢的东西是那一行的变更,比如是+号,那么丢掉代表不增加这一行,减号-同理丢的是不删除这一行,也就是恢复这一行。
sourcetree会把所有的变更以区块来分组,所以如果是整个区块的变更都没有意义,可直接丢弃整个块,如图:
随后暂存所选提交(文件栏)
暂存代码
暂存和丢弃类似,是将代码片段暂存到本地暂存区 以备提交,提交时所提交的代码就是暂存区的代码。当我们某个功能已经实现了,但是又想优化一下代码,可又担心等会没优化成功,此时的代码丢失,如果没有git之前,我们可能会备份一份代码,这里只需要暂存代码即可。暂存后,正常修改,后续的变更会出现在未暂存文件中的变更栏中。
此时无论是丢弃,还是继续暂存都是基于上次已暂存的文件。
当然,你也可以提交代码,来实现类似功能。
解决冲突
当我和别人改了相同文件的相同行时,(大部分我们多人改变了一个文件,git都会帮我们处理掉,自动合并,但是当改变同一文件的相同行时,在拉取时就会有冲突)如图:
我们可以先将我们代码贮藏起来(菜单栏),然后再拉取代码,接着应用贮藏,应用后冲突的文件会显示出来
这个时候,我们需要指定一个版本,比如是别人的版本为准,还是我的版本,随后右键文件选择 解决冲突使用我的版本(左侧栏选择文件状态-》工作副本)
变更栏可以看到updated upstream 是别人改的版本,+====下面我改的版本。
如果远程和本地都有问题,建议打开ide工具编辑后提交。
新开分支
在项目中,我们可能分为开发分支、集成分支、生成环境分支等,这时我们只需要在某个节点上右键选择分支即可
输入一个辨识度强的分支名,点击"创建分支"即可。便可在ST的左侧栏的"分支"树形结构下看到新建的分支了。
不过这里要注意的是此时该分支只是存在于操作者本地,如果该分支是需要团队共享的,那还需要操作者将其提交到服务端,即 推送分支。
推送分支
新开的分支不会在远程显示,所以需要将分支推送到远程。
确认之后,其他小伙伴就可以看到你创立的分支了!
切换分支
需要切换到不同分支时,直接双击想要切换的分支即可。
拉取远程分支
找到远程对应的想拉取的分支右键,点击 检出 即可。
回滚提交
有些时候,我们提交的代码有问题,需要回滚回去。
回滚某次提交
将某次变更(在sourcetree里是某个节点)右键选择回滚提交。
回滚文件
忽略文件
项目中,有一些文件夹是需要忽略,而不需要提交到仓库里,比如bin目录下、target目录下的文件。
这里支持忽略单个文件、忽略所有扩展名、或略文件夹下的一切等。之后,我们不会看到这些文件变动。
需要说明的是忽略文件,只能忽略未跟踪文件,如果已跟踪文件(之前被提交过),需要先将这些文件删除后,提交代码库,再次忽略文件。
合并分支
由图中可以看出,我们的测试分支代码落后master分支2个节点,我们可以在master分支上右键选择合并到当前分支
当有冲突时,需要和上文中介绍的那样解决冲突,然后提交;如果没有冲突,需要手动点击推送按钮将合并后的变更提交到远程
查看文件变动历史
我们时常需要查看某个文件变动的历史,这里我们可以右键查看文件的 变更历史
点击后效果如图:
标签的使用
我们有些时候需要给一个变更增加一个标签,比如稳定版1.0的标签
效果如下:
注:
- 尽可能丢弃一些无意义的变更
- 尽可能按模块分配开发人员任务
- 合并分支后需立刻解决掉冲突
- 减少单个文件内代码变动的区块
- 如果使用我的版本解决问题,需告知对方