• git


    Git 基础要点:

    1、直接快照,而非比较差异:

    (首先再次明确一个版本管理工具的概念:以版本号为基础索引视图)

    svn在版本对应处存储的是文件修改差异,而Git不保存差异数据,而是对所有文件作一快照,然后保存一个指向这次快照的索引。

    *那么,快照的概念是什么?是复制一个文件么?这样应该很耗存储空间吧?

    *问题:本地除了最新版本代码,是否有历史版本的代码(为了在不联网时查看历史修改记录)?

    2、近乎所有操作都可本地执行

    Git在本地磁盘上保存着所有有关当前项目的历史更新,处理起来速度飞快。--(空间换时间

    Git可以在本地取出一个月前的快照和当前文件作一次差异运算。

    *快照占用存储空间如何?差异运算?

    3、时刻保持数据完整性

    4、多数操作仅添加数据

    就算删除数据,都不会丢失数据。

    5、三种状态

    重要概念:对任何一个文件,在git内部只有三种状态:已修改(modified),已暂存(staged)和已提交(committed)。

    已修改表示修改了某个文件,但还没有提交保存;

    已暂存表示把已修改的文件放在下次提交时要保存的清单中。

    已提交表示该文件已经被安全地保存在本地数据库中了;

    由此,文件流转的三个工作区域:工作目录,暂存区域和本地数据目录。

    每个项目都有一个git目录,它是git用来保存元数据和对象数据库的地方。每次克隆镜像仓库的时候,实际copy的就是这个目录里面的数据。

    从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。这些文件实际上都是从git目录中的压缩对象数据库中提取出来的。

    ---page 9--- 

    page 10 安装git (可以从源代码安装)

    page 12 配置git

    $git config --system     对应文件/etc/gitconfig   系统中所有用户

    $git config --global       对应文件~/.gitconfig     该用户

    $git config 工作目录下使用此无选项命令,设置的是工作目录中的.git/config,仅针对前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以.git/config里的配置会覆盖/etc/gitconfig中的同名变量

    用户信息:配置用户名称和电子邮件地址,这两条配置很重要,每次git提交时都会引用这两条信息,说明是谁提交了更新

    $git config --global user.name "John Doe"

    $git config --global uer.email johndoe@example.com

    文本编辑器:默认会使用操作系统指定的默认编辑器,一般可能会是Vi或Vim。如果有其他偏好,比如emacs

    $git config --global core.editor emacs

    差异分析工具(具体见第7章)

    $git config --global merge.tool vimdiff

    git可以理解kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,opendiff

    查看配置信息

    $git config --list

    有时会看到重复的变量名,那就说明它们来自不同配置文件,不过最终git实际采用的是最后一个。

    查看某个环境变量的设定

    $git confg user.name

    获取帮助 方法有三

    $git help <verb>

    $git <verg> --help

    $man git-<verb>

    比如学习config命令如何用:

    $git help config

    --------------------------------------------------------

    Git 基础

    如何初始化一个新的代码仓库,做一些适当的配置;开始或停止跟踪某些文件;暂存或提交某些更新

    如何忽略某些文件或是名称符合特定模式的文件;如何既快且容易地撤销犯下的小错误;

    如何浏览项目的更新历史,查看某两次更新之间的差异;

    如何从远程仓库拉数据下来或者推数据上去。

    取得项目的git仓库

    有两种取得git项目仓库的方法。第一种是在现存的目录下,通过导入所有文件来创建新的git仓库;第二种是从已有的git仓库克隆出一个新的镜像仓库来。

    从当前目录初始化:要对现有的某个项目开始用git管理,在项目所在的目录执行:

    $git init 

    $git add *.c

    $git add README

    $git commit -m "initial project version"

    从现有仓库克隆:比如想对某个开源项目出一份力

    $git clone git://github.com/schacon/grit.git

    这会在当前目录下创建一个名为"grit"的目录,其中内含一个.git目录。

    如果在克隆的时候,自己要定义新建项目目录名称,可以命令最后指定:

    $git clone git://github.com/schacon/grit.git mygrit

    检查当前文件状态:

    $git status

    #Not currently on any branch.

    nothing to commit(working directory clean)

    表示:当前没有任何跟踪着的文件,也没有任何文件在上次提交后更改过,当前目录下没有出现任何处于未跟踪的新文件。

    跟踪新文件

    $git add README

    $git status

    如果文件在Changes to be committed这行下面,就说明是已暂存状态。

    修改已经跟踪过的文件

    $git status

    如果文件在Changed but not updated这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。要暂存这次更新,需要运行git add命令(此命令根据目标文件的状态不同,效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并是把有冲突的文件标记为已解决状态等)。

    忽略某些文件

    $cat .gitignore

    *.[oa]

    *~

    第一行告诉git忽略所有以.o或.a结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的。

    第二行告诉git忽略所有以波浪符结尾的文件,许多编辑软件都用这样的文件名保存副本。

    文件.gitignore的格式规范如下:

    所有空行或者认注释符号#开头的行都会被git忽略

    可以使用标准的glob模式匹配

    匹配模式最后跟反斜杠(/)说明要忽略的是目录

    要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反

    例子:

    #此为注释-将被git忽略

    *.a  #忽略所有.a结尾的文件

    !lib.a  #但lib.a除外

    /TODO  #仅仅忽略项目根目录下的TODO文件,不包括subdir/TODO

    build/  #忽略build/目录下的所有文件

    doc/*.txt  #会忽略doc/notes.txt 但不包括doc/server/arch.txt

    查看已暂存和未暂存的更新

    要查看尚未暂存的文件更新了哪些部分,不加参数直接输入git diff

    此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。

    若要看已经暂存起来的文件和上次提交时的快照之间的差异,可以用git diff --cached命令。

    提交更新

    $git commit

    跳过使用暂存区域

    git commit -a -m "..."

    移除文件

    从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。

    ---page 24---

  • 相关阅读:
    ab 性能测试工具的使用(Web并发测试)
    java 读取文件——按照行取出(使用BufferedReader和一次将数据保存到内存两种实现方式)
    java 判断两个时间相差的天数
    java 正则表达式的应用:读取文件,获取其中的电话号码
    mybatis 插入数据时返回主键
    CodeForces 493B Vasya and Wrestling 【模拟】
    图像边缘检測小结
    【JS设计模式】温习简单工厂模式、工厂方法模式、抽象工厂模式概念
    60.自己定义View练习(五)高仿小米时钟
    bzoj4361 isn
  • 原文地址:https://www.cnblogs.com/jimwind/p/3498261.html
Copyright © 2020-2023  润新知