• Git学习笔记一--创建版本库、添加文件、提交文件等


    Git,是Linus花了两周时间用C写的一个分布式版本控制系统。牛该怎么定义?

      其实,很多人都不care谁写了Git,只在乎它是免费而且好用的!So do I!

    下面开始我们的学习:

      1.Git安装(略)。

      2.创建版本库

      首先,选择一个合适的地方(我选择了D盘,我的电脑是Win 7),常见一个空目录:

    $ mkdir Git
    $ cd Git
    $ pwd//显示当前的路径
    /d/Git
    

     :Windows下,路径名不要包含中文,因为Git对中文支持不给力!

      第二步,通过git init命令把这个目录变成Git可以管理的仓库:

    $ git init
    Initialized empty Git repository in /d/Git/.git/
    

      这样就创建了你的Git仓库。

       接下来,我们上传一个文件到Git。编辑一个readme.txt文件,内容如下:

    Git is a distributed version control system.
    Git is free software distributed under the GPL.
    Git has a mutable index called stage.
    Git tracks changes of files.
    

      将其放到/d/Git目录下,因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。

      将一个文件放到Git仓库需要两步:

        (1)使用git add将文件添加到仓库:

    $ git add readme.txt

        (2)使用git commit将文件提交到仓库:

    git commit -m "wrote a readme file"
    [master 48b9a84] wrote a readme file
     1 file changed, 2 insertions(+)
    

      :git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

      commit可以一次提交多个文件:

    $ git add file1.txt
    $ git add file2.txt
    $ git add file3.txt
    $ git commit -m "add 3 files."
    

      3.Git的命令很多,下面再学习几个吧!

      继续修改readme.txt文件:

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

      git status命令看看结果:

    $ git status
    # On branch master
    # Changes not staged for commit:
    #   (use "git add <file>..." to update what will be committed)
    #   (use "git checkout -- <file>..." to discard changes in working directory)
    #
    #    modified:   readme.txt
    #
    no changes added to commit (use "git add" and/or "git commit -a")
    

      git status查看仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。

      虽然Git告诉我们readme.txt被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的readme.txt,所以,需要用git diff这个命令看看:

    $ git diff readme.txt 
    diff --git a/readme.txt b/readme.txt
    index 46d49bf..9247db6 100644
    --- a/readme.txt
    +++ b/readme.txt
    @@ -1,2 +1,2 @@
    -Git is a version control system.
    +Git is a distributed version control system.
     Git is free software.
    

      git diff查看不同!

      在工作中,我们可能提交了几千个文件,如果想看历史记录,可以使用git log命令:

    $ git log
    commit 3628164fb26d48395383f8f31179f24e0882e1e0
    Author: Michael Liao <askxuefeng@gmail.com>
    Date:   Tue Aug 20 15:11:49 2013 +0800
    
        append GPL
    
    commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
    Author: Michael Liao <askxuefeng@gmail.com>
    Date:   Tue Aug 20 14:53:12 2013 +0800

    
        add distributed
    
    commit cb926e7ea50ad11b8f9e909c05226233bf755030
    Author: Michael Liao <askxuefeng@gmail.com>
    Date:   Mon Aug 19 17:51:55 2013 +0800

    
        wrote a readme file
    ………………………………………………………………………………
    ………………………………………………………………………………

    commit 0f71dba115d8830212fd1736a02a077ce2e91699
    Author: lixiaolun <303041859@qq.com>
    Date: Thu Jan 15 22:06:05 2015 +0800

    wrote a readme file
    (END)

      注:最后你可能会碰到这个(END),此后你怎么点都没有用。那么现在你要输入:wq或:q退出。这个命令同linux指令。

      git log命令显示从最近到最远的提交日志。如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

    $ git log --pretty=oneline
    fae7920797cbe9057e7e5ced1fdc79d1eb592758 commit a file readme
    33cff68fd77dcbfdb8644a8d3f1c34175830b1a6 text1.txt commit
    48b9a84010813eecb1e3acca555d1b704c9d5930 wrote a readme file
    2d874d572e805c1825200458a8a8aa9e55429d8f 2015-1-30 upload
    86edb2f2f658578f993532c83c5c368d2c4a7c4c local_gitgub
    7d3197611468b3d7dd6b861829e19de626c22bc8 remove text1.txt
    d9ee12aeca6cacf25f6b02095d03d5a9f03d3c5e remove text.txt
    d79f7ec6a470f0efb1afee1accb28fae3ef3a995 add test.txt
    24a93f3894fec142cbc11bc508f2407635380c81 git tracks changes
    c22b22edea6b0f9fff3c4d73b3351c49e966a85e add 3 text.txt
    57c62b9d4e94c19a9484ca6c6c6e84f18965b41a understand how stage
    f2bbf87ef050bb70d98390cf8ca1680ed0dff297 modify reamde.txt
    fe829f988f43647933edb35f347171c54187af4a add a new word distr
    0f71dba115d8830212fd1736a02a077ce2e91699 wrote a readme file
    

      友情提示:你看到的一大串类似3628164...882e1e0的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示。

       时光穿梭之版本回退!!

      如果你提交的一个文件,发现还不如你你上一个版本好,赶紧回退!怎么做呢?

      首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

      回退到上一个版本的命令git reset

    $ git reset --hard HEAD^
    

      --hard参数有啥意义?这个后面再讲,现在你先放心使用。

      查看文件命令cat readme.txt:

    $ cat readme.txt
    Git is a distributed version control system.
    Git is free software distributed under the GPL.
    

      git reflog记录了每一次命令:

    $ git reflog
    ea34578 HEAD@{0}: reset: moving to HEAD^
    3628164 HEAD@{1}: commit: append GPL
    ea34578 HEAD@{2}: commit: add distributed
    cb926e7 HEAD@{3}: commit (initial): wrote a readme file
    

      前面的数字是commit id。知道commit id可以回退上一次执行的命令,回退命令为git reset --hard <commit id>:

    $ git reset --hard 3628164

    感谢廖叫兽:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137402760310626208b4f695940a49e5348b689d095fc000

  • 相关阅读:
    Vim常用命令
    [转载] Java注解
    学习Zookeeper之第3章Zookeeper内部原理
    学习Zookeeper之第2章Zookeeper安装
    学习Zookeeper之第1章Zookeeper入门
    《Effective Java 2nd》第8章 通用程序设计
    《Effective Java 2nd》第7章 方法
    Log4j2报错ERROR StatusLogger Unrecognized format specifier
    比较三个数,求最大数字 ( 应用条件运算符:?)
    两个数字比较大小的方法 (分别应用if-else和条件运算符实现)
  • 原文地址:https://www.cnblogs.com/lixiaolun/p/4360732.html
Copyright © 2020-2023  润新知