事实证明,第一次使用sourceTree进行多人协作开发时,都会遇到这样或者那样的问题,会浪费时间整半天,究其原因,是没有将git的原理和sourceTree的操作结合起来理解透彻,这里我就来总结总结。

一、git指令开发

首先来看看正常开发时的git指令git指令

git clone git@server-name:path/repo-name.git  //把远程仓库克隆到本地
git checkout -b dev   //到对应文件夹下新建名为 dev 的开发分支,并切换到该分支:
git add .  //迭代需求开发完成后,添加所有修改到暂存区 
git commit -m ‘提交注释’   //提交所有暂存区中所有修改,必须加注释 
git push origin dev:dev   //将本地 dev 分支上传到远程仓库,并以 dev 命名 

当涉及多人协作时,需要先将远程的更新垃取并合并到本地:

git checkout master   //切换到主分支 
git fetch origin   //抓取远程主机的所有更新到本地 
git merge origin/master  //合并远程master分支到本地master分支 
git checkout dev  //切换到开发分支
git merge master  //将本地master分支合并到当前分支dev

二、sourcetree界面对应

sourcetree进行版本控制最好是使用英文版,界面和git指令可以一一对应,奈何这个PC机下了两次都是中文版。。。那我们就来看看界面的对应关系
这里写图片描述

当涉及多人协作时,sourceTree无疑简化了操作,方面很多,对应到git指令

git checkout master   -->双击本地master分支,切换过程需要等一小会
git fetch origin   -->点击获取(fetch)按钮,这时候拉取(pull)按钮就会提示有多少更新
git merge origin/master  -->这一步换成(pull)按钮操作,拉取更新到本地,此时需保证本地dev的更新都已经提交
git checkout dev  -->双击本地dev开发分支
git merge master  -->在本地dev分支单击右键,选择将本地master分支合并到当前分支

三、图解git操作原理

经过前两步,已经基本会使用git指令和sourceTree进行开发,但不解其原理很容易忘记这些操作,下面是我总结的git操作原理,有助于梳理git原理和指令操作
这里写图片描述

该图对上文未提到的“解决冲突”也标注出来的,当从远程合并过来的代码和本地代码有冲突时,需要手动解决冲突,这时做好是回到自己的开发环境,比如sublime,解决完冲突之后再提交

介于 <<<<<<<(七个‘<’) HEAD  和 ======= 的内容是原有的内容
介于 ======= 和 >>>>>>> 是拉取下来的代码

四、一不小心直接在master分支开发了

在多人协作的过程中,每个人都在自己的本地开发分支开发,但是如果一不小心直接在master分支开发了咋办?解决方法是 stash和pop,由于没一个版本的sourceTree的指令位置不一样,所以就单记录git指令了

git stash //暂存当前正在进行的工作,使当前分支恢复到上次提交的状态
git stash pop//释放暂存的工作到当前分支

所以,误在主分支开发,解决方法是

git stash  //在主分支使用该命令,保存正在进行的操作,恢复master分支的状态
git checkout dev  //切换到自己的本地开发分支
git stash pop  //释放暂存的工作到当前分支

另外一种情况,为了fix 一个紧急的bug, 先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐