• Git速成学习第一课:创建版本库与版本回退


    Git速成学习笔记整理于廖雪峰老师的官网网站:https://www.liaoxuefeng.com/

    我太困了0.0精神点再写......

    /*我来啦!以后会陆续更新自己的学习笔记*/

      Git是分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

    先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完

    活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

    • 分布式版本控制与集中式版本控制系统有什么不同呢?

      和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,

      随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了

    git config --global user.name "your name"
    git config --global user.name "your email"

    注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

    • Class 1 . 创建版本库
      • step1.创建新的空目录
    mkdir learngit
    cd learngit
    pwd 
    /users/michael/learngit
      • step2.将目录变成Git可以管理的仓库
    git init
    Initialized empty Git repository in /Users/michael/learngit/.git/

        如果你没有看到.git目录,说明这个目录被默认隐藏,使用命令ls -ah可以查看

        现在我们编写一个readme.txt,内容如下。

    Git is a version control system.
    Git is free software.

        一定要将readme.txt文本放到learngit目录下(子目录下也ok),因为这是一个git仓库。

    • 第一步,用命令行告诉Git,把文件添加到仓库。
    $ git add readme.txt

      执行上面的命令,没有任何显示,就就是ok了。因为Unix十分哲学(大佬原话哈哈哈),没有消息就是最好的消息。

    • 第二步,用命令行告诉GIt,把文件提交到仓库。
    $ git commit -m "wrote a readme file"
    [master (root-commit) eaadf4e] wrote a readme file
     1 file changed, 2 insertions(+)
     create mode 100644 readme.txt
    • 注明:git commit命令中,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的。
    • git commit 命令执行成功后会告诉你
      • 1 file changed : 1个文件被改动(我们新添加的readme.txt)
      • 2 insertions : 插入两行内容(readme.txt中有两行内容)
      • 然后我们需要明确一下为什么Git添加文件需要add、commit两步呢?
        • 因为commit可以一次提交很多文件所以你可以多次add不同的文件
        • git add file1.txt
          git add file2.txt file3.txt
          git commit -m "add 3 files"
    • 单元小结
      • 初始化一个Git仓库,使用git init命令 
      • 添加文件到Git仓库,分两步:
        • 使用git add <files>,注意,可以反复多次使用,添加多个文件
        • 使用命令git commit -m <message>,完成
    • Class 2 . 时光穿梭机
    • 2.1 版本回退

      现在你已经学会了修改文件,然后修改之前的readme.txt文件,然后提交到Git版本库。

    Git is a distributed version control system.
    Git is free software distributed under the GPL.

      然后尝试提交

    $ git add readme.txt
    $ git commit -m "append GPL"
    >>[master 1094adb] append GPL
    >>
    1 file changed, 1 insertion(+), 1 deletion(-)

      这种不断对文件进行修改,然后不断提交到版本库中,就好比存档。如果有步骤出现错误从最近的commit恢复

      我们现在已有的版本有:

      beta1:wrote a readme file

      beta2:add distributed

      beta3:append GPL

      当然我们怎么能记得几千航的文件中都做了哪些更改。所以我们需要版本控制来告诉我们历史记录都有哪些。

      使用git log进行查看

    $ git log
    commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)
    Author: Michael Liao <askxuefeng@gmail.com>
    Date:   Fri May 18 21:06:15 2018 +0800
    
        append GPL
    
    commit e475afc93c209a690c39c13a46716e8fa000c366
    Author: Michael Liao <askxuefeng@gmail.com>
    Date:   Fri May 18 21:03:36 2018 +0800
    
        add distributed
    
    commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
    Author: Michael Liao <askxuefeng@gmail.com>
    Date:   Fri May 18 20:59:18 2018 +0800
    
        wrote a readme file

      git log命令显示的是最近到最远的提交日志,我们从中可以看到三次更改。

      如果嫌输出的信息太多,我们可以尝试加上--pretty=oneline参数

      现在我们进行版本回退,准备把readme.txt回退到上一个版本,也就是add distributed的那个版本。

      首先Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本用HEAD^表示,上上个版本就是HEAD^^

      现在我们要做的就是把当前的版本append GPL回退到上一个版本add distributed,就可以使用git reset命令了

    $ git reset --hard HEAD^
    >>HEAD is now at e475afc add distributed

      --hard参数的含义之后再讲。我们会看到现在的readme.txt内容已经变成上个版本的内容了。使用git log可以查看现在版本库的状态

    • 但是最新的版本append GPL已经不见了该怎么办?

      只要上面的命令行窗口没有关闭就可以沿着上面一直找,知道找到那个append GPLcommit id是1094adb.....

    $ git reset --hard 1094a
    >>HEAD is now at 83b0afe append GPL

      版本号不需要写全,前几位就可以,git会自己去找。

      Git的版本回退速度进行的非常快,因为Git内部有个指向当前版本的HEAD指针,当你回退版本的时候,

      Git仅仅是把HEAD指针从指向append GPL改为指向add distributed,然后顺便把工作区改了。

    • 如果关机想恢复到新的版本该怎么办?找不到新版本的commit id该怎么办?

      在Git中,总是有后悔药可以吃的。当你用$git reset --hard HEAD^回退到add distributed版本时,

      再想恢复到append GPL,就必须找到append GPL的commit id。Git提供了一个命令git reflog用来记录你的每一次命令

    $ git reflog
    >>e475afc HEAD@{1}: reset: moving to HEAD^
    >>1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
    >>e475afc HEAD@{3}: commit: add distributed
    >>eaadf4e HEAD@{4}: commit (initial): wrote a readme file

      从输出可以得出,append GPL的commit id是1094adb...,现在欢迎你回到新版本

    • 单元小结

      HEAD指向的版本就是当前的版本,使用命令git reset --hard commit_id

      git log可以查看提交历史,以确定要回退到那个版本

      git reflog查看历史命令,以便要确定要回到未来那个版本

      

    对你有帮助就支付宝请我喝可乐叭~~~

  • 相关阅读:
    【Git教程】Git教程之分支管理
    【Git教程】Git教程及使用命令
    【深入理解Java虚拟机】自动内存管理机制——垃圾回收机制
    HDU-5902-GCD is Funny解题笔记
    数据结构——二叉树的遍历
    数据结构——树
    Css--input输入框点击时去掉外框outline:medium;(chrome)
    JSON中eval与parse的区别
    【转载】实时监听输入框值变化的完美方案:oninput & onpropertychange
    使用寄存器点亮LED(第2节)—寄存器映射代码讲解
  • 原文地址:https://www.cnblogs.com/baobaotql/p/11696315.html
Copyright © 2020-2023  润新知