注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小葫芦君(汉斯的博客)

博客迁移到新博客:https://blog.ssxingshou.com

 
 
 

日志

 
 
关于我

小小葫芦商城,为您提供高品质的商品,一流的产品,一流的包装服务,一流的物流服务,放心购买

网易考拉推荐
GACHA精选

关于对Git的使用  

2012-02-07 15:27:52|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

目录:
一、简介
二、基本知识
三、深入使用
四、探讨实现
五、参考资料

一、简介
简单介绍git,以及git的由来。

二、基本知识
1、git config
git的全局配置,存储于$HOME/.gitconfig里,这里的配置影响当前用户的所有git repository。
命令行里,通过git config的--global参数开启全局配置。
也可以单独对某个仓库进行基本配置:
$ git config --global user.name cnhans
$ git config --global user.email cnhaixiang@gmail.com

2、git ignore
简介:
忽略文件默认为当前目录的.gitignore。
也可以通过修改全局配置git-config的excludesfile指定全局忽略文件。
$ git config --global core.excludesfile ~/.gitignore
养成一开始就设置好.gitignore的好习惯

.gitignore的语法
    1》、#为注释行,空行不匹配任何文件,这两个特征可以使.gitignore文件可读性强一些。
    2》、通过!取反。
    3》、斜杆/结尾的字符,被当做文件夹处理,文件夹下的所有文件将被忽略。
    4》、除去以上三种情况,其他时候使用标准的glob模式匹配。
glob语法
            *                    [ab09]                   ?                 [0-9a-zA-Z]        \
匹配任意字符     匹配多种可能     匹配单个字符     匹配一个范围     转义字符

3、git branch 分支是git的核心,重点的重点。
理解分支
      git在创建分支的时候,实际上是从整个提交历史里的某个起点开始(该起点被记录为分支的祖先,标识分支的起始位置),创建提交历史树的枝干。由于git每次提交的时候均会记录当次提交的校检和,配合将数据打包存储,记录当前仓库相对于前一版本的变化。所以git的分支,实际上只是一串包含对象校检和(SHA-1)的文件。通过这个校检和,得出分支在提交历史树上的走向。git里创建删除分支变得非常简单。这一点不像svn那样每创建一个分支就需要整个目录拷贝一份。在git上非常推荐频繁使用分支。甚至可以一个issue(bug)一个分支,解决完切回主分支合并;没解决完就让分支继续走,主分支继续正常任务。

分支的基本操作
1》、创建和销毁
a、列出分支列表
$ git branch
b、创建分支
$ git branch imonitor20120210
c、切换已有分支
$ git checkout imonitor20120210
d、创建并切换分支
$ git checkout -b imonitor20120210
e、删除分支
$ git branch -d imonitor20120210
这些操作都是在本地操作,后面会加上提交到远程库的命令

2》、合并和冲突
合并前,要先切换到要合并的分支上。
a、以下表示imonitor20120210分支合并到主干master上面
$ git checkout master
$ git merge imonitor20120210
冲突的时候,git会报出哪些文件冲突了,这时需要手动解决完这些冲突的文件方可提交
通过$ git status 查看冲突文件
解决完冲突,需要手动标识已解决,跟svn的resolved功能类似
$ git add 冲突的文件
再一次查看冲突的文件
$ git status
这个时候就可以提交了。
$ git commit -m "合并分支imonitor20120210"
此时的提交还是在本地仓库里面。

3》、管理多个分支
前面提到,git非常推荐频繁使用分支,在大量分支的情况下,我们需要对分支做好管理。
通过-v,可以查看最后一次提交的日志
$ git branch -v
通过--merged和--no-merged来查看分支是否已经合并完成。
$ git branch --merged
$ git branch --no-merged
未合并的分支,在删除时会提示分支未合并。
$ git branch -d xxx
出现:类似but it is not yet merged to HEAD.

4》、分支管理的流程
一般情况下,分支可以划分为长分支和短分支两种。
长分支
    长期任务
        prepub:上线前合并,根据上线列表,从各个分支中集中到该分支,统一部署提测
        master:上线后合并,长期保留一个稳定可用的分支应付紧急任务
    项目
    较难解决的bug
    新特性试验田
    重构
长分支,经常会落后其他分支一大截,需要养成习惯,适时从其他重要分支进行合并, 尤其是项目分支 。

短分支
    临时需求
    小bug

5》、分支可视化
git本身的log提供--graph选项,可以提供字符界面的分支可视化视图。
$ git log --graph
git还有很多GUI工具,可以提供可视化地分支走势图,比如gitk,qgit,GitX等等。

6》、远程分支
至今为止,前面所有提到的概念都是直接本地操作的,并不需要任何网络连接。而git本身是一个分布式代码管理工具(DVCS),所以分支管理上,存在本地分支和远程分支两种概念。可以简单的理解,远程分支就是别人的本地分支push到服务器上的时候产生的。比如master就是一个最典型的远程分支(默认)。
$ git push origin master
上面我们创建分支后,通过push,就可以推送到远程git服务器上面。
比如刚才的imonitor20120210分支,我们可以这样:
$ git push origin imonitor20120210
这样就把本地的分支推送到远程服务器了。
远程分支的标识形式为{remote/branch},比如origin/imonitor20120210。
$ git branch -a
远程分支和本地分支需要区分,所以,在从服务器上拉取特定分支的时候,需要指定本地分支名字。
$ git branch imonitor20120210 origin/imonitor***
而1.6.2以上版本的git,可以通过--track选项,简化这一过程。这也是为什么直接执行git clone的时候,会自动创建本地master分支的原因。(实际上,pull操作相当于fetch+merge。)
$ git checkout --track origin/imonitor20120210
远程分支和本地分支是松散的结构,可以把任意远程分支合并到任意本地分支里;同样,也可以把任意本地分支push到任意远程分支上。
$ git branch
$ git pull origin imonitor20120210
$ git push origin master
a、同步本地远程分支:
git fetch origin
b、删除远程分支:
git push origin :imonitor20120210

4、git remote 远程的东西



三、深入使用
1、

四、探讨实现

五、参考
链接:

资源:
  评论这张
 
阅读(1792)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017