美文网首页
要怎样才能弄清楚Git?

要怎样才能弄清楚Git?

作者: Seer已被使用 | 来源:发表于2017-07-29 01:42 被阅读10次

    首先

    作为一名游走在软件开发初级阶段的小菜,一直以来弄不清git、github,即使以前也尝试用过基本功能,但由于时(tuo)间(yan)紧(zheng),今天才下定决心乘着周末,好好把Git的概念和基本用法弄懂,无奈记忆力差,只得借助这篇笔记帮助自己记忆了。

    人类的大脑在信息检索上,效率是极高的。然而前提是我们得先记住它们 —— ^_^
    

    誊抄别人的文章我一向是拒绝的,正因为觉得文章需要原创,所以我的简书上就还没啥文章。也正赤裸裸的说明,本菜还是太菜。能和大家分享的东西太少。但我愿同各位能看完这篇笔记的小菜们一同努力。

    It's never too late to mend.
    

    在此

    感谢《ProGit》一书
    感谢伯乐在线提供的中文翻译,想要快速了解概要的朋友继续往下,想要彻底弄清的朋友请查看原文

    概要

    集中化的版本控制系统

    VCS(Version Control System)猜的,版本控制系统最早是本地版本控制——RCS。后来为了协同工作,CVCS(Centralized Version Control Systems)应运而生,代表有CVS,Subversion(SVN) 以及 Perforce 等。

    核心是文件的版本控制集中在一台中央服务器进行处理,多对一的关系进行协同工作。统一的权限管理。如图:

    CVCS.png

    缺点是中央服务器的单点故障。如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。要是中央服务器的磁盘发生故障,碰巧没做备份,或者备份不够及时,就还是会有丢失数据的风险。最坏的情况是彻底丢失整个项目的所有历史更改记录,而被客户端 提取出来的某些快照数据除外,但这样的话依然是个问题,你不能保证所有的数据都已经有人事先完整提取出来过。本地版本控制系统也存在类似问题,只要整个项 目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。

    分布式的版本控制系统(包含Git)

    DVCS( Distributed Version Control System ), 有Git、Mercurial、Bazaar 以及 Darcs 等。

    注意:Git是 "版本控制",Github是"代码托管",两者概念不同
    

    在这类系统中,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。如图:


    GVCS.png

    优点是,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。整个系统是一个多对多的关系,灵活性高,成员和成员之间通过各自的代码仓库进行远程交互。

    关于"分布式"和"集中式"VCS的工作原理是有差异的,详情见:Git详解之一:Git起步


    主角 —— Git

    安装

    根据机型自行百度,mac XCode自带git,不建议重新下载,一般都是自己给自己挖坑,熟悉包管理shell相关技术的同学自便。

    使用

    1、首先cd到需要版本控制的目录

    $ git init
      此时文件夹下会创建.git文件,所有 Git 需要的数据和资源都存放在这个目录中。
    

    2、在git初始化的工作空间(文件夹)中,一开始所有文件都没有被管理跟踪未跟踪
    在Git中,所受管理的文件只有三种状态:

    • 已提交(committed)(提交并保存到仓库)
    • 已修改(modified)(修改后还没有保存到暂存区域)
    • 已暂存(staged)(保存到暂存区域)

        $ git add README
        注意:这里说的"被管理"即:通过add添加文件让git知道要跟踪这个文件的变化
        tip:通过配置".gitignore"文件可以指定忽略哪些文件或指定几个文件
      

    3、查看状态

    $ git status
    

    一定要理清楚 add 和 status 的作用 ,参见Git详解之二:Git基础

    4、.gitignore文件(自己创建配置,和.git放在同一层文件夹)

     # 此为注释 – 将被 Git 忽略
    *.a       # 忽略所有 .a 结尾的文件
    !lib.a    # 但 lib.a 除外
    /TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
    build/    # 忽略 build/ 目录下的所有文件
    doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
    

    Git的用法远远不止这些,我在此也无法说完。只能做一个大概的基础认知总结,更多好玩有趣的功能还请各位移步Git详解之二:Git基础,一定要去好好看看,别像我一样_


    总结

    至此,说说我自己的感受,之前一直囫囵吞枣的以为Git嘛,用到了再去查,先了解大概能用就行,就像学程序一样,用到什么组件再去查用法。但是我现在知道错了。正是因为这样的想法,导致对Git产生了恐惧觉得复杂高深,直到今天静下心来认真学习才发现,摸清楚了原理以后。也没那么难!也觉得自己应该反思一下以前对待Git的态度 了。
    再次感谢《ProGit》一书,
    伯乐在线提供的中文翻译。如果想吃透Git,一定得去好好看看。

    相关文章

      网友评论

          本文标题:要怎样才能弄清楚Git?

          本文链接:https://www.haomeiwen.com/subject/whqqlxtx.html