zoukankan      html  css  js  c++  java
  • git 常用命令及解析 由浅入深

    笔者用的是windows系统,不过并没有什么影响。

    Git  分布式版本控制系统。

    为了让初学git的人明白git是干什么的,有什么意义 笔者觉得先来介绍git作为版本控制器是怎么运作的会让大家对后边的内容有更好的掌握。

      Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。工作区就是我们的代码存放的位置。

      我们把文件往Git版本库里添加的时候,是分两步执行的:

        第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

        第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

      我们创建版本库的时候git为我们创建了唯一的一个master分支,git是git commit命令把所有暂存区的内容提交到master分支。也就是说我们在写代码时为了防止出现因为修改bug或是误操而破坏代码的情况我们可以每编写一段代码就add到暂存区,等代码完成然后一次commit。就像word文档的保存一样,当然git的意义可远不止这样!!!以后笔者会依次介绍。

    1.git init

    文哥@DESKTOP-GHL1S3Q /D/test (master)
    $ git init
    Initialized empty Git repository in d:/test/.git/

      创建版本库,使当前目录变成git可以管理的目录。

    2.git add

    文哥@DESKTOP-GHL1S3Q /D/test (master)
    $ git add gitTest.txt

      把文件从工作区添加到缓存区

    3.git status

    文哥@DESKTOP-GHL1S3Q /D/test (master)
    $ git status
    On branch master
    Your branch is up-to-date with 'originTest/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:   gitTest.txt
    
    no changes added to commit (use "git add" and/or "git commit -a")

      显示当前状态

      命令下边的信息是说gitTest.txt这个文件的内容 已经被修改了,但是还没有提交。git虽然告诉我们内容有修改过,那么我们要怎么查看修改的内容呢 答案是用git diff 命令。

    4. git diff

    文哥@DESKTOP-GHL1S3Q /D/test (master)
    $ git diff gitTest.txt
    diff --git a/gitTest.txt b/gitTest.txt
    index 142c56d..87b9489 100644
    --- a/gitTest.txt
    +++ b/gitTest.txt
    @@ -1,2 +1,3 @@
     git first
     git second
    +git third
     No newline at end of file

      这段话的意思是当前gitTest.txt的内容和暂存区的gitTest.txt相比多了一句git third。这时我把gitTest.txt文件在提交一次,然后看看git status是什么状态。

    文哥@DESKTOP-GHL1S3Q /D/test (master)
    $ git add gitTest.txt
    
    文哥@DESKTOP-GHL1S3Q /D/test (master)
    $ git commit -m "second commit"
    [master b43d55f] second commit
     1 file changed, 2 insertions(+)
    
    文哥@DESKTOP-GHL1S3Q /D/test (master)
    $ git status
    On branch master
    Your branch is ahead of 'originTest/master' by 2 commits.
      (use "git push" to publish your local commits)
    
    nothing to commit, working directory clean

      最后git说nothing to commit, working directory clean 意思是我们当前没有需要提交的修改,而且,工作目录是干净(working directory clean)的。

    5。git log

    文哥@DESKTOP-GHL1S3Q /D/test (master)
    $ git log
    commit b43d55f4f8268fe191aa16ddaa3fe418c05cb6f5
    Author: wenge <1980849329@qq.com>
    Date:   Fri Mar 11 19:53:16 2016 +0800
    
        second commit
    
    commit ef3dbb7a669ecb38e14a3327702456abb4a91900
    Author: wenge <1980849329@qq.com>
    Date:   Fri Mar 11 18:59:47 2016 +0800
    
        delete except first
    
    commit 985f7833052563af586a75edfdb40439e57b861d
    Author: wenge <1980849329@qq.com>
    Date:   Thu Mar 10 13:10:16 2016 +0800
    
        commit second
    
    commit c9ef4de9ad04bbac7e38b6cc95eea294854d96b7
    Author: wenge <1980849329@qq.com>
    Date:   Thu Mar 10 13:06:30 2016 +0800
    
        first commit

    很容易看出来 这个命令是查看之前的提交记录。

    6.git reset

    那现在我们在工作环境中我们已经用了git保管之前写的代码,但我们要是遇到问题需要回到上一个版本该怎么办呢 就要用到这个命令了

    现在gitTest.txt文件里有这些内容:

    git first
    git second
    git third

    现在用git reset回到之前的版本该怎么做呢?如下:

    文哥@DESKTOP-GHL1S3Q /D/test (master)
    $ git reset --hard head^
    HEAD is now at ef3dbb7 delete except first

    再看gitTest.txt的内容:

    git first

    回到了之前的版本,这里要注意的是上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。但是我们也没有必要真的去数是第几个版本,可以换另一个语句,这时候就要知道git log这个语句了,大家会看到之前介绍的git log语句会看到一大长串版本号,我们的新语句就是基于这一大串数字来实现的

    文哥@DESKTOP-GHL1S3Q /D/test (master)
    $ git reset --hard b43d55f
    HEAD is now at b43d55f second commit

    当然了我们不用把版本号全部写下来,只需要写前几位记好了。

    其实大家看一下最上面那个图,这两个语句是一样的

    7.git checkout -- file

    让这个文件回到最后一次commit或是add的状态,如说是add了没有commit就回到暂存区的状态,如果是commit之后没有在add那就回到master的状态,这时就和上边的git reset命令的作用一样了。

    那么我们要是想撤销暂存区的内容怎么做呢,可以用到git reset HEAD file。

    文哥@DESKTOP-GHL1S3Q /D/test (master)
    $ git checkout -- gitTest.txt
    
    文哥@DESKTOP-GHL1S3Q /D/test (master)
    $ git reset HEAD gitTest.txt
    Unstaged changes after reset:
    M       gitTest.txt

    8. git rm file

    在版本库里删除文件


    本地库的命令就暂时介绍这几个。下一篇介绍远程库的git操作。

  • 相关阅读:
    SQL命令
    MySQL、Oracle、SQL Server
    函数调用
    php 读取图片显示在页面上 demo
    浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
    jquery $.ajax()方法
    HTML 字符实体
    php 内置支持的标签和属性
    java-03 变量与运算符
    java-02 JDK安装与环境变量配置&安装编程IDE
  • 原文地址:https://www.cnblogs.com/Vdiao/p/5267250.html
Copyright © 2011-2022 走看看