代码管理方式无非是git和svn两种。本人一直使用svn管理代码,比如:Cornerstone、IntelliJ IDEA等,后面开发新项目,大佬们开始使用git方式管理代码,推荐的工具就是sourceTree。
一、git基础知识介绍
git简介
git是一种开源的分布式版本管理工具、是比较流行的代码管理工具svn和git对比
a、管理方式
svn是集中式管理、git是分布式管理
b、分支管理
svn分支使用比较笨拙、git分支使用相对轻松
c、网络限制
svn必须在联网情况下才能工作
git支持本地版本控制
d、管理文件数量
svn会在每一个目录放置一个.svn
git只会在根目录放置一个.git
二、 soureTree使用
(1) soureTree下载地址
http://download.csdn.net/detail/huoshes/9821985
(2) 刚开始使用soureTree,可以免费使用20天,20天以后就需要进行注册了,这个需要到官方网站进行注册,生成一个license文件、然后直接导入license文件即可
点击导入许可证就可以了、如果感觉麻烦、可以在github上搜索souretree,里面有别人上传的许可证,可以直接下载使用
(3) 从仓库中下载代码、直接克隆仓库代码到本地
输入仓库地址、点击高级选项、选择分支
注意:这里不要勾选递归子模块、否则会出现提交代码出错<原因不知,有高手知道、请赐教>
(4)经过上述操作步骤、在本地会保存一份与库上一样的代码、
此时,双击本地代码、你可以对代码进行一系列操作
四、sourceTree具体操作
这里主要分为3部分
- 代码仓库
- 工具栏
- 代码提交记录
(1)代码仓库
文件状态:展示的是本地代码、本地代码被改动后、工作副本会提示相应的改动数量
分支:本地代码是从哪个分支上下载下来的、可以有多个
远端:服务器上所有分支结构
(2)工具栏<至关重要>
提交:当本地代码有改动并且你想提交到服务器上时,可以点击提交按钮。不过这里的提交按钮并不是真正的提交到服务器上,只有再点击推送按钮后,才是真正的提交到服务器上,这里只是上传到本地仓库。
检出:相当于是重新下载代码,这里可以下载不同分支代码、下载一个分支的不同版本代码,不过要注意的是你工作副本里面的代码会被覆盖掉、所以有必要的话,记得保存原有代码。由于这里容易出现切换分支以后,推送到服务器容易出错,这里会特别介绍一下。
场景一:由于某种原因,你需要回退当前分支版本
以上是库上代码,现在回退到test1.html版本到代码
a、在代码提交记录栏,选择你要回退的版本、点击检出
此时,会弹出一个警告
或者以下警告框:
这两个警告框的意思大致相同:你现在创造的是一个与服务器隔离的分支,说白了,这就是个本地分支,在提交代码的时候,会出现错误,提示远程服务器上并没有这个分支,造成无法正常提交代码
以上操作好比是将远程分支的代码下载到本地,然后二者没有任何关联。
解决上述问题的办法就是创建一个本地分支与远程分支关联、有以下两种方法:
在终端上输入指令,进入存放本地代码的文件夹,执行指令:
git checkout -b newBranchName
注意这里创建的newBranchName不能与已经存在的分支名称相同、查看已有分支名称的指令:
git branch -a
直接点击工具栏中的分支按钮
注意这里的分支名称不能够重复
备注:如果你仅仅是为了回退版本、查看旧代码、这里不需要进行以上操作。
参考网址:
http://blog.csdn.net/futureer/article/details/48039781这里分支合并到主线上,可以通过在服务器端进行。这里以github合并代码为例、简单进行图形演示:
---------图1-------
---------图2-------
---------图3-------
---------图4-------
重置:回到最近一次add或者commit的状态,此操作目的是保持本地代码与服务器代码一致<本地已做修改未提交代码会被覆盖、慎用>
暂存:将代码保存至缓存区
添加:将当前本地修改和增加的文件添加到暂存区,经过这一步才可以进行提交、推送
移除:将当前本地修改和增加的文件从暂存区移除
添加/删除:这个功能暂时未用到
抓取:从远端获取最新版本到本地、但是不会自动合并
拉取:从远端获取最新版本到本地、会自动合并
推送:本地代码上传到远端、但是必须先点击提交按钮
分支:创建或者删除分支
合并:分支的合并
标签:给每个版本定义个标签
在Finder中显示:点击此按钮,可以直接找到本地代码
Git工作流:一般master是总的主枝,每个人开发的时候都自己定义一个dev分支是自己的主枝,当没有问题的时候提交到master,然后每个人自己开发新功能的时候创建一个feature功能分支,修改BUG时要单独拿出一个BUG分支
终端:点击后,进入命令行模式
(3)代码提交记录
查看什么人提交了代码,这里不详细介绍了。
四、sourceTree使用技巧
a、问题:本地修改了代码还没有提交、此时有别人提交了代码、此时提交代码出问题
解决方案:这个时候,你需要做的是,将修改的代码提交到本地<缓存到本地>,再拉取代码,否则会提示错误、不能正常下载代码。
b、问题:本地代码做了修改,但是在sourceTree中未暂存文件中没有提示
解决方案:这个文件可能被你忽略了,此时点击sourceTree中的偏好设置、然后点击Git、点击全局忽略列表旁边的编辑文件按钮、看文件中是否包含你修改的文件,有的话删除即可。详细如下图:
c、问题:本地代码修改后,拉取远程库代码,造成冲突、此时重新下载代码,将本地代码合并进去,效率太低、得不偿失。
解决方案:此时为了能够解决冲突,需要借助比较工具进行比对。比较好用的比较工具,个人推荐Beyond Compare,这里需要自己进行配置。
点击sourceTree中的偏好设置、选择比较界面
这里需要输入比较命令、合并命令、参数;
1、比较命令和合并命令
点击Beyond Compare的安装命令行工具
在比较命令和合并命令中输入红色框中的路径
2、参数
第一个参数输入框:$$LOCAL $REMOTE
第二个参数输入框:$LOCAL $REMOTE $BASE $MERGED
注意:上述字符之间要有空格