zoukankan      html  css  js  c++  java
  • GIT命令记录


    pwd

    用于显示当前目录

    MaiBenBen@An MINGW64 ~
    $ pwd
    /c/Users/MaiBenBen
    

    mkdir xxx

    创建目录

    MaiBenBen@An MINGW64 ~
    $ mkdir myFirstRepository
    

    cd xxx

    切换到 xxx 目录下面 ;

    MaiBenBen@An MINGW64 ~
    $ cd myFirstRepository
    
    //已经切换到 myFirstRepository 下面
    MaiBenBen@An MINGW64 ~/myFirstRepository
    $ pwd
    /c/Users/MaiBenBen/myFirstRepository
    

    如果想要切换盘符,则使用 cd /xx

    MaiBenBen@An MINGW64 ~
    $ cd /d
    
    //切换到 D 盘 
    MaiBenBen@An MINGW64 /d
    $ pwd
    /d
    

    vi xxx

    使用 vim 编辑器,编辑 xxx 文件 ;


    Git init

    在文件夹里面使用该命令,就会将所在的文件夹变为 Git 的仓库 ,但是一般该文件夹的名字,其所在的目录都不要有中文字符;创建完毕以后,文件夹中会多出一个 .git 文件,该文件是用 Git 自己用的,用于管理版本库,一般不要手贱去动它 ;

    MaiBenBen@An MINGW64 /e/myFirstRepository
    $ git init
    Initialized empty Git repository in E:/myFirstRepository/.git/
    

    Git add xxx

    将文件 添加Git 仓库中,(只是添加到仓库) ;

    Git 能记录追踪文本文件的内容变化,对于音频、图像等二进制数据,它是无法记录追踪器具体变化的,最多记录追踪其大小变化!这里其中说一下 Word 为了加密自己的格式,是使用二进制保存的,因此 Git 也无法追踪其变化!

    添加 到仓库的文件,需要先放到仓库文件夹或者其子文件夹下面,对文件名大小写敏感!

    MaiBenBen@An MINGW64 /e/myFirstRepository (master) 
    $ git add readme.txt
    

    Git commit [-m “message”]

    这才是将文件 提交 到仓库,方括号中可选项,用于添加提交说明,为什么提交本次代码 ;

    MaiBenBen@An MINGW64 /e/learnGit (master)
    $ git commit -m "修改后的文件说明"
    [master (root-commit) 2cfc997] 修改后的文件说明
     1 file changed, 3 insertions(+)
     create mode 100644 Readme.txt
    
    

    Git status

    查看仓库的情况,是否有文件更新,是否有文件未提交 等等 ;

    MaiBenBen@An MINGW64 /e/learnGit (master)
    $ 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 diff

    查看文件内容的改动;

    MaiBenBen@An MINGW64 /e/learnGit (master)
    $ git diff
    warning: LF will be replaced by CRLF in Readme.txt.
    The file will have its original line endings in your working directory.
    diff --git a/Readme.txt b/Readme.txt
    index 7bc9289..61d385f 100644
    --- a/Readme.txt
    +++ b/Readme.txt
    @@ -1,3 +1,6 @@
     哈哈啊哈 2018111411:33:48
     使用 VIM 编辑,有点难受呀马飞;
    -
    +ESC 进入模式选择!
    +:W 保存
    +:q 退出
    +A 进入编辑
    

    + xxx 代表新增的内容;
    - xxx 代表删除的内容 ;


    Git log

    查看历史操作,查看我们曾经对文件的修改;

    MaiBenBen@An MINGW64 /e/learnGit (master)
    $ git log
    // 最近一次修改(第二次修改)
    commit e933eb076326c563beb9fe4dbdaaf8bf4de2690a (HEAD -> master)
    Author: Allbet <1255621959@qq.com>
    Date:   Wed Nov 14 13:29:50 2018 +0800
    
        对Readme.txt文件进行修改
    
    // 第一次修改
    commit 2cfc99744cadc4d3091a42e1c9bfa59e6696f726
    Author: Allbet <1255621959@qq.com>
    Date:   Wed Nov 14 11:43:24 2018 +0800
    
        修改后的文件说明
    
    

    可以看到,我们一共对文件进行了两次修改 ;

    如果不想看这些具体信息,比如:修改者、修改时间等,可以加上参数 : --pretty=oneline ,仅保留版本号、修改说明 ;

    MaiBenBen@An MINGW64 /e/learnGit (master)
    $ git log --pretty=oneline
    e933eb076326c563beb9fe4dbdaaf8bf4de2690a (HEAD -> master) 对Readme.txt文件进行修改
    2cfc99744cadc4d3091a42e1c9bfa59e6696f726 修改后的文件说明
    
    

    cat xxx

    查看 xxx 文件内容 ;

    MaiBenBen@An MINGW64 /e/learnGit (master)
    $ cat Readme.txt
    哈哈啊哈 2018111411:33:48
    使用 VIM 编辑,有点难受呀马飞;
    

    Git reset --hard xxx

    回退到之前的某个版本;

    想要回退,则必须让 Git 知道回退到哪个版本, Git 中,使用 head 代表最新版本,***head^*** 代表前一个版本, head^^ 代表前2个版本,不使用 ^ 也行,使用 head~1 代表前一个版本,后面的版本以此类推;

    MaiBenBen@An MINGW64 /e/learnGit (master)
    $ git reset --hard Head~1
    HEAD is now at 2cfc997 修改后的文件说明
    
    MaiBenBen@An MINGW64 /e/learnGit (master)
    $ cat Readme.txt
    哈哈啊哈 2018111411:33:48
    使用 VIM 编辑,有点难受呀马飞;
    

    此时,使用 Git log --pretty=oneline 查看历史记录,发现刚刚的新版本不复存在了;

    MaiBenBen@An MINGW64 /e/learnGit (master)
    $ git log --pretty=oneline
    2cfc99744cadc4d3091a42e1c9bfa59e6696f726 (HEAD -> master) 修改后的文件说明
    

    要是想在回退到之前的新版本,也是可以的,但是需要使用具体的版本号,没有 head 这样的代表可以使用了;

    MaiBenBen@An MINGW64 /e/learnGit (master)
    $ git reset --hard e933eb   //写上版本号
    HEAD is now at e933eb0 对Readme.txt文件进行修改
    
    MaiBenBen@An MINGW64 /e/learnGit (master)
    $ cat Readme.txt
    哈哈啊哈 2018111411:33:48
    使用 VIM 编辑,有点难受呀马飞;
    ESC 进入模式选择!
    :W 保存
    :q 退出
    A 进入编辑
    
    

    可以看见文档又被恢复到之前的最新版了,同时我们还发现,版本号,是不需要写全部的,只需要写前面的几个即可, Git 会自己去根据前缀查找出具体的,但是要注意的是,给的版本号前缀,必须保证只能找到一个其唯一的全部版本号 ;


    Git reflog

    记录我们每次操作的对应的版本号;

    MaiBenBen@An MINGW64 /e/learnGit (master)
    $ git reflog
    e933eb0 (HEAD -> master) HEAD@{0}: reset: moving to e933eb
    2cfc997 HEAD@{1}: reset: moving to Head~1
    e933eb0 (HEAD -> master) HEAD@{2}: commit: 对Readme.txt文件进行修改
    2cfc997 HEAD@{3}: commit (initial): 修改后的文件说明
    

    至此,我们可以随意的进行版本的回退,恢复,因为,每次操作的版本号,都在这里;

    并其,我们可以发现, Git 内部是使用链表的一个机构保存每个版本的,即使我们回退到之前的任意一个版本,后续的版本也都在,不是被删除了;


    暂存区

    Git 有个暂存区的概念,每个人的电脑上,使用 git init 创建一个仓库的时候,自动生成的 .git 文件夹,里面进行管理版本库, .git 版本库,被分成一个 master 主分支区和暂存区;

    每次 add 都是先添加到暂存区中的, commit 以后,才会清空暂存区,将里面的文件添加到 master 主分支上;


    git diff head – xxx

    查看 xxx 文件,在库中的主版本和当前工作区中的差别;

    MaiBenBen@An MINGW64 /e/learnGit (master)
    $ git diff Head -- Readme.txt
    diff --git a/Readme.txt b/Readme.txt
    index 61d385f..a388d8a 100644
    --- a/Readme.txt
    +++ b/Readme.txt
    @@ -2,5 +2,7 @@
     使用 VIM 编辑,有点难受呀马飞;
     ESC 进入模式选择!
     :W 保存
    -:q 退出
    -A 进入编辑
    +:Q 退出
    +A 插入
    +S 删除
    +
    

    如果没有差别,则不输出;


    git checkout – xxx

    撤销 工作区 中对 xxx 文件的全部修改,让其回滚到最近一次的 git addgit commit 操作的状态,其实就是拿着版本库中的文件,进行替换工作区中的文件 ;


    git reset HEAD

    想要撤销暂存区中文件,该命令会将暂存区中的命令,拿回到工作区;


    rm xxx

    xxx 文件从工作区删除,但是此时版本库还有该文件;

    MaiBenBen@An MINGW64 /e/learnGit (master)
    $ rm test.txt
    

    可以使用  git status ,观察库的变化,此时会被告知有文件被删除;

    MaiBenBen@An MINGW64 /e/learnGit (master)
    $ git status
    On branch master
    Changes not staged for commit:
      (use "git add/rm <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
            deleted:    test.txt
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
            .Readme.txt.swp
    
    no changes added to commit (use "git add" and/or "git commit -a")
    
    

    git rm xxx

    从版本库之中删除 xxx 文件,跟着 git commit 一起,就可以彻底的删除文件了;

    如果想要恢复被删除的文件,则使用 git checkout -- xxx ,该命令会移除所有操作;

  • 相关阅读:
    利用mybatis-generator自动生成代码
    gradle安装
    有关﹤![CDATA[ ]]> 说明
    mysql时间字段转换为毫秒格式
    string 与BigDecimal互转
    VLOOKUP多条件查找不使用辅助列
    BIEE-CSS样式大全
    VBA【遍历每个工作表并将工作表表名赋予B2单元格】
    深入理解公式{1,0}的用法
    DB2解锁
  • 原文地址:https://www.cnblogs.com/young-youth/p/11665626.html
Copyright © 2011-2022 走看看