• Git学习(一):初始化仓库、添加文件、版本回退


    Git学习(一):初始化、添加文件、版本回退

    初始化一个仓库


    本文使用的命令行工具为cmder,部分显示可能和cmd不同,但结果是一样的

    初始化一个Git仓库,使用git init命令。在cmder软件下初始化git后,目录后面会多出这么一串字符(master -> origin)

    1544027681330

    切换到非Git仓库路径时,后面是没有这串字符的

    1544027786636

    会在当前目录下生成一个.git 文件夹

    1544027465658

    若想取消初始化,删除改文件夹即可 rm -rf .git ,删除后git目录后面的 (master -> origin) 也不见了

    1544027571167

    添加文件到Git仓库


    首先创建一个文本文件

    vim test.txt
    

    内容为:

    Hello Git!
    

    这里发现,当Git仓库内增加了文件时,cmder目录后面显示的字符串颜色发生了变化

    1544028245245

    接下来添加到Git仓库,分两步:

    1. 使用命令git add <filename>,注意,可反复多次使用,添加多个文件;

      1544028915732

    2. 使用命令git commit -m <message>,完成。(message为提交文件的描述信息,以便获知变更内容)

      如图,提交成功,同时在cmder软件下,提交后目录名后面的字符串颜色变回原来的白色

      1544029030156

    git status命令可以让我们时刻掌握仓库当前的状态

    修改文件信息,第二行添加内容

    This twoline
    

    然后执行 git status查看仓库状态

    1544029325662

    然后将文件改动提交,再次查看

    1544029585007

    这里可以发现cmder这个软件会自动判断Git仓库的文件状态,在提交后目录后面的字符串又变回了无变化的白色

    如果想查看具体修改了什么内容需要用git diff这个命令

    1544029733286

    这里没有显示信息是因为我们已经提交过了

    进入文件将刚才加入的第二行内容删除后再次查看

    1544029834008

    前面有个- 表示第二行的内容被删除

    版本回退


    在Git中,我们可以用git log命令查看历史版本信息
    git log命令显示从最近到最远的提交日志

    1544030046794

    图中一大串类似97d9e...的是commit id(版本号),是一个SHA1计算出来的一个非常大的数字,用十六进制表示

    这里如果嫌输出信息太多,可以试试加上--pretty=oneline参数,每次提交只显示一行内容

    这里我们先把刚刚删除的操作提交再加上--pretty=oneline参数查看:

    1544030173245

    HEAD 指的是最近一次的提交,所以这里 HEAD 变成了刚刚的这次提交

    同时,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^太过麻烦,所以写成HEAD~100

    回退版本之前我们先随便添加一些内容在test.txt文件中提交:

    1544030956487

    1544031210727

    接下来我们使用使用git reset --head HEAD^^命令来回退test.txt文件到上一个版本:

    1544031821893

    **git reset 用法如下:**

    用法:git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<提交>]
      或:git reset [-q] [<树或提交>] [--] <路径>...
      或:git reset --patch [<树或提交>] [--] [<路径>...]
    
        -q, --quiet           安静模式,只报告错误
        --mixed               重置 HEAD 和索引
        --soft                只重置 HEAD
        --hard                重置 HEAD、索引和工作区
        --merge               重置 HEAD、索引和工作区
        --keep                重置 HEAD 但保存本地变更
        --recurse-submodules[=<reset>]
                              control recursive updating of submodules
        -p, --patch           交互式挑选数据块
        -N, --intent-to-add   将删除的路径标记为稍后添加
    
  • 相关阅读:
    new对象数组时的内存布局
    写程序取自己进程的AEP
    类虚函数表原理实现分析(当我们将虚表地址[n]中的函数替换,那么虚函数的实现就由我们来控制了)
    测试 __try, __finally, __except(被__finally捕获的异常, 还会被上一级的__except捕获。反之不行)
    围观M$的new
    将258.369 double值转为内存表示(科学计数法)
    Broadcast Reveiver作用
    DEBUG模式下, 内存中的变量地址分析
    不包含SDK头文件, 补全API定义
    俄罗斯方块SDK版
  • 原文地址:https://www.cnblogs.com/laoxiajiadeyun/p/10075369.html
Copyright © 2020-2023  润新知