经过好几周的工作忙碌,终于可以有时间静下心来学习东西了,做为崇尚技术的人来说,应该是最幸福的时光了,呵呵,当然也是宅神的表现啦,话不多说,继续git的学习,上次已经对git的一些概念进行了说明,具体可以参考:http://www.cnblogs.com/webor2006/p/3574700.html ,这次来以实际的操作,对git在实际工作中的使用进行进一步阐述。

下面分两种角色进行学习:Git的个体工作者(也就是使用者)和Git的仓库管理员:

Git的个体工作者(也就是使用者):

  • 基本操作
    ① 初使化和建立项目,有两种方式:
    本地仓库:

    关于这个操作,已经在上节博文中有介绍过,这里就不多说了。

    远程仓库:

    具体我们来实验下:


    实际上,对于远程仓库,可以查看它的仓库名:

    而这相当于是远程仓库的别名,实际上可以查看其真实仓库地址:

    而如果是本地仓库呢?看是否也能显示这些信息,先回到本地init的仓库目录:

    当然不能显示了,因为是本地的仓库,不是远程仓库
    ②add & commit:
    为了便于命令的学习,git官网提供的远程地址不是太稳定,所以在oschina中我建一个自己的git远程仓库,方便学习:


    【说明】:oschina开源中国社区团队推出的基于Git的快速的、免费的、稳定的在线代码托管平台
    这时,通过git status来查看一下当前仓库的状态:


    这时,我们将其添加到版本库中:

    这时再将文件提交到我们的本地仓库中:

    ③Ignore file(忽略文件):
    在svn中,我们也有忽略文件的功能,也就是想忽略掉不想提交的文件,在android开发中,经常会有bin,gen目录,而每次的改天这些目录的文件都会变化,所以应该忽略掉它们,所以,下面用实验来模拟这种场景,新建两个文件,让其中一个忽略,另外一个可以提交:

    那在git中是如何忽略文件的呢?实际上是建立一个忽略文件,然后将你想忽略的文件加入到里面,步骤如下:

    然后将要忽略的文件添加进去:

    这时,提交真会如我们所愿,bin.dll文件会被忽略,而bin2.dll应该能被提交?


    ④diff(文件比较):
    在敲比较命令之前,先说明一个概念:
    git diff -staged:它比较的是working directory和staging area之间的区别
    git diff -cached:它比较的是staging area和git directory之间的区别
    下面用实验来说明:
    先修改一个文件:



    这时候,我们执行git add ,将其添加到staing are区域:

    其实gid diff默认就是git diff -stagged
    下面,再比较staging area和git directory两者的区别:

    【说明】:关于working directory、staging area、git directory三者的概念,可以参考博文:http://www.cnblogs.com/webor2006/p/3574700.html⑤reset:恢复到之前版本
    关于这个命令,平常用得不多,可用checkout来代替,这个之后会学习到,所以先暂且不用理解。
    ⑥rm,mv:删除与移动

    这时我们查看一下状态:

    【注意】:这里是删除了staging area索引中的文件,但并未真正从git directory本地仓库中删除,所以还可以从本地仓库中checkout出来,将删除的文件还原

    如果想真正的从本地仓库删除,则需这样做:

    再查看一下状态:

    对于mv操作,基本类似,想要改变仓库则最终需要提交一下,这里就不多说了。
    ⑦log、whatchanged:查看日志
    对于git的增删改查记录,实际上是可以查看的,在团队开发中,对于每个人提交的东东就可以有据可依:

    同样whatchanged一样,只是说更详细一点:

    【注意】如果想退出查看log,需按下"q"键,直接按ctrl+z是无法退出日志查看状态的。

  • 共享及更新项目
    push:将本地仓库的代码提交给远程仓库:

    而目前本地仓库的文件结构如下: 

    这时我们将其提交到进程仓库中,利用push命令:

    这时到oschina.git中来查看远程仓库中是否已经有了cexo.txt文件:

    fetch,pull:从远程的分支获取最新的版本到本地
    关于这两者的区别,可以参考网上的这篇博文:http://blog.csdn.net/hudashi/article/details/7664457
    何时使用fetch?
    ③remote:查看远程仓库信息【关于这个,已经在上面中提到过】
    git remote:显示出远程版本别名:
    git remote -v 显示远程地址

    添加远程仓库
    git remote add pd git://github.com/cexo/ticgit.git

    git remote rename pd paul

    git remote rm paul

    git remote show origin

Git的仓库管理员:

  • 分支管理及合并
    对于Git来说,分支是它的一个很重要的特点,所以需好好理解它
    ①branch:
    创建分支:git branch 分支名:

    查看当前的分支情况:

    注意一个细节,查看当前处理哪个分支上,可以通过它:
  • ②checkout:
    切换分支

    下面要做一个实现,来体会一下分支的作用,先切回主分支来查看一下目前文件:

    这时,切换到子分支,对cexo.txt进行修改,模拟在实际开发中的场景:

    于切换回主分支:

    另外还有一些可以查看分支的命令:
    git show-branch:

    git diff branch1 branch2

    ③merge(合并):
    当子分支开发完了并验证没问题了,则可以将其合并到master主分支上来了,所以合并分支有两种方式:
    第一种:git merge "merge branch1 to master" HEAD branch1
    意思是将branch1的代码合并到主分支上的最新代码,其中HEAD表示最新
    第二种:
    git checkout master
    git pull . branch1
    操练一下,将子分支cexo中修改的合到主分支上来:

    当然,实际merge时,肯定不会像现在这么顺利,肯定会有冲突的情况,下面来模拟一下怎么解决冲突:

    这时将其提交:

    同样,在子分支中进行修改同一个地方并提交:


    这时,再回到主分支进行合并:



    最后再提交:

    ④tag:
    当项目的第一个beta版本出来之后,可以对其加入一个tag,以便如果之后的开发有问题,可以快速回归到这个版本,所以tag的作用也就在此,下面来模拟一下:
    假如目前的版本是beta1,已经发布了,这时打上一个Beta1的tag:

    然后开始第二个版本的开发,版本为Beta2,这时又打上一个Tag:

    提交:

    这时,想查看Beta1的代码:

    但是如上图运行提醒所说:

    所以,如果想从tag中的代码上继续修改,则需要在一个新的分支上进行。
    最后,如果想删除tag,执行下面命令既可:

    好了,关于Git的学习,先到此为止,在实际工作中遇到代码管理的一些问题会继续跟进的!

版本控制Git研究二的更多相关文章

  1. 版本控制git之二 分支 切换分支 创建分支 合并 删除

      版本控制git之二 分支   有人把 Git 的分支模型称为它的`‘必杀技特性’',也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出. 为何 Git 的分支模型如此出众呢? Git 处 ...

  2. 版本控制Git研究一

    对于Git的使用,早在2010年的时候,就已经开始了,接触它也是由于Android开发的原因,我们知道Android源代码的管理就是用的Git,而至今期间已经呆过几个不同的公司,不同公司对于代码的管理 ...

  3. 版本控制git之二-分支

    有人把 Git 的分支模型称为它的`‘必杀技特性’',也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出. 为何 Git 的分支模型如此出众呢? Git 处理分支的方式可谓是难以置信的轻量, ...

  4. iOS版本控制git小结--yoowei

    # 显示隐藏文件 defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder # 不显示隐藏文件 d ...

  5. Fiddler实战深入研究(二)

    Fiddler实战深入研究(二) 阅读目录 Fiddler不能捕获chrome的session的设置 理解数据包统计 请求重定向(AutoResponder) Composer选项卡 Filters选 ...

  6. Git 笔记二-Git安装与初始配置

    git 笔记二-Git安装与初始配置 Git的安装 由于我日常生活和工作基本上都是在Windows上,因此此处只说windows上的安装.Windows上的安装和其他程序一样,只需要到http://g ...

  7. 版本控制Git使用最佳实践

    总结版本控制Git的使用,应明确有哪些具体的场景 应用场景  紧急上线(hotfix)  功能开发(feature)  测试(dev/release)  生产(master) 紧急上线 4.git c ...

  8. (转载)Fiddler实战深入研究(二)

    原文来源于:http://www.cnblogs.com/tugenhua0707/p/4637771.html,作者:涂根华 !个人觉得文章写的特别好,故收藏于此,感谢原作者的分享 Fiddler实 ...

  9. Fiddler实战深入研究(二)[转载]

    Fiddler实战深入研究(二) 阅读目录 Fiddler不能捕获chrome的session的设置 理解数据包统计 请求重定向(AutoResponder) Composer选项卡 Filters选 ...

随机推荐

  1. [LeetCode] 482. License Key Formatting 注册码格式化

    You are given a license key represented as a string S which consists only alphanumeric character and ...

  2. [LeetCode] 544. Output Contest Matches 输出比赛匹配对

    During the NBA playoffs, we always arrange the rather strong team to play with the rather weak team, ...

  3. 解决ScrollView嵌套百度地图滑动冲突

    一.问题描述 scrollview中嵌套百度地图时会出现滑动冲突,地图无法滑动的情况. 二.期望结果 焦点在地图上时,只有地图移动,焦点在地图外部时,可以滑动scrollview. 三.解决方法 自定 ...

  4. SpringBoot系列教程JPA之delete使用姿势详解

    原文: 190702-SpringBoot系列教程JPA之delete使用姿势详解 常见db中的四个操作curd,前面的几篇博文分别介绍了insert,update,接下来我们看下delete的使用姿 ...

  5. 【转】Axure RP9.0.0.3661Team Edition激活码

    被授权人:Axure 授权密码:ydiJnG8quHEhHLu/MWonjkeul5LYB1+tX9fyPVnpdmU0cb/NJzVs45uD7z5Iswmi 转载于:http://menvscod ...

  6. java的Array和List相互转换

    1.Array转List,通过java.util.Arrays.asList(T... a)参数是可变泛型参数 注意,Arrays.asList返回的类型是不可变长度的集合,底层是final修饰的泛型 ...

  7. Jenkins+TestNG+gitlab+maven持续集成

    准备工作: 1.安装Jenkins 网上有jenkins安装配置教程 2.jenkins配置 2.1全局工具配置 配置JDK JDK别名:名称可以随意,但是要方便识别 JAVA_HOME:centos ...

  8. springcloud学习的坑

    一:启动Euerka作为提供者或者消费者时,启动失败报:Process finished with exit code 0 Unregistering application EUREKA-SERVI ...

  9. wmi的作用

    WMI是Windows 2K/XP管理系统的核心,对于其他的Win32操作系统,WMI是一个有用的插件. WMI的作用是: ①通过它可以访问.配置.管理和监视几乎所有的Windows资源,比如用户可以 ...

  10. Fiddler代理手机抓包

    Fiddler代理手机抓包 0. 安装Fiddler 1. 安装HTTPS证书并允许远程连接 Tools - Options 点击OK后重启Fiddler. 确保手机与当前电脑在同一局域网. 然后在手 ...