• GIT的初级使用


    安装git

    [root@localhost ~]# yum -y install git
    [root@localhost ~]# git --version
    git version 1.8.3.1
    

    初始化git仓库:

    [root@localhost git_data]# mkdir /git_data/
    [root@localhost ~]# cd git_data/
    [root@localhost git_data]# git init
    重新初始化现存的 Git 版本库于 /root/git_data/.git/
    

     此时查看仓库的状态:

    [root@localhost git_data]# ll
    总用量 0
    [root@localhostgit_data]# git status
    # 位于分支 master
    无文件要提交,干净的工作区
    

     创建文件:

    [root@localhost git_data]# touch 123.txt
    [root@localhost git_data]# git status
    # 位于分支 master
    # 未跟踪的文件:
    #   (使用 "git add <file>..." 以包含要提交的内容)
    #
    #       123.txt
    提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
    [root@localhost git_data]# git add .   #提交到暂存区,".”代表所有
    [root@localhost git_data]# git status
    # 位于分支 master
    #
    # 初始提交
    #
    # 要提交的变更:
    #   (使用 "git rm --cached <file>..." 撤出暂存区)
    #
    #       新文件:    123.txt
    
    (使用 "git rm --cached <file>..." 撤出暂存区)
    [root@localhost git_data]# rm -rf 123.txt
    [root@localhost git_data]# git status
    # 位于分支 master
    #
    # 初始提交
    #
    # 要提交的变更:
    #   (使用 "git rm --cached <file>..." 撤出暂存区)
    #
    #       新文件:    123.txt
    #
    # 尚未暂存以备提交的变更:
    #   (使用 "git add/rm <file>..." 更新要提交的内容)
    #   (使用 "git checkout -- <file>..." 丢弃工作区的改动)
    #
    #       删除:      123.txt
    #
    [root@localhost git_data]# git rm --cached 123.txt
    rm '123.txt'
    [root@localhost git_data]# ll
    总用量 0
    [root@localhost git_data]# git status
    # 位于分支 master
    #
    # 初始提交
    #
    无文件要提交(创建/拷贝文件并使用 "git add" 建立跟踪)
    

      

    [root@localhost git_data]# touch 123.txt
    [root@localhost git_data]# git add .
    [root@localhost git_data]# git status
    # 位于分支 master
    #
    # 初始提交
    #
    # 要提交的变更:
    #   (使用 "git rm --cached <file>..." 撤出暂存区)
    #
    #       新文件:    123.txt
    #
    [root@localhost git_data]# git rm --cached 123.txt
    rm '123.txt'
    [root@localhost git_data]# ll
    总用量 0
    -rw-r--r-- 1 root root 0 4月  20 16:09 123.txt
    [root@localhost git_data]# git status
    # 位于分支 master
    #
    # 初始提交
    #
    # 未跟踪的文件:
    #   (使用 "git add <file>..." 以包含要提交的内容)
    #
    #       123.txt
    提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
    [root@localhost git_data]# git add .
    [root@localhost git_data]# git status
    # 位于分支 master
    #
    # 初始提交
    #
    # 要提交的变更:
    #   (使用 "git rm --cached <file>..." 撤出暂存区)
    #
    #       新文件:    123.txt
    #
    

     将暂行区的文件提交上去:

    [root@localhost git_data]# git commit -m "add 123.txt"
    
    *** Please tell me who you are.
    
    Run
    
      git config --global user.email "you@example.com"
      git config --global user.name "Your Name"
    
    to set your account's default identity.
    Omit --global to set the identity only in this repository.
    
    fatal: unable to auto-detect email address (got 'root@localhost.(none)')
    

     由上面知道需要将开发的姓名和邮箱配置上去才能使用

    [root@localhost git_data]# git config --global user.name "nsh"
    [root@localhost git_data]#  git config --global user.email "nsh@example.com"
    [root@localhost git_data]# git config --global color.ui true #设置语法高亮
    [root@localhost git_data]# git config --list  查看配置
    user.name=nsh
    user.email=nsh@example.com
    color.ui=true
    core.repositoryformatversion=0
    core.filemode=true
    core.bare=false
    core.logallrefupdates=true
    

    查看配置信息:

    [root@localhost git_data]# git config
    用法:git config [选项]
    
    配置文件位置
        --global              使用全局配置文件
        --system              使用系统级配置文件
        --local               使用版本库级配置文件
        -f, --file <文件>     使用指定的配置文件
        --blob <blob-id>      read config from given blob object
    
    操作
        --get                 获取值:name [value-regex]
        --get-all             获得所有的值:key [value-regex]
        --get-regexp          根据正则表达式获得值:name-regex [value-regex]
        --replace-all         替换所有匹配的变量:name value [value_regex]
        --add                 添加一个新的变量:name value
        --unset               删除一个变量:name [value-regex]
        --unset-all           删除所有匹配项:name [value-regex]
        --rename-section      重命名小节:old-name new-name
        --remove-section      删除一个小节:name
        -l, --list            列出所有
        -e, --edit            打开一个编辑器
        --get-color <slot>    找到配置的颜色:[默认]
        --get-colorbool <slot>
                              找到颜色设置:[stdout-is-tty]
    
    类型
        --bool                值是 "true" 或 "false"
        --int                 值是十进制数
        --bool-or-int         值是 --bool or --int
        --path                值是一个路径(文件或目录名)
    
    其它
        -z, --null            终止值是NUL字节
        --includes            查询时参照 include 指令递归查找
    

     此时对项目代码进行提交

    [root@localhost git_data]# git commit -m "add 123.txt"
    [master(根提交) 93ce473] add 123.txt
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 123.txt
    

      

    删除代码

    避免花里胡哨的删除

    1:

    [root@localhost git_data]# touch 123
    [root@localhost git_data]# git add .
    [root@localhost git_data]# git rm -rf 123
    rm '123'
    [root@localhost git_data]# git status
    # 位于分支 master
    无文件要提交,干净的工作区
    [root@localhost git_data]# ll
    总用量 0
    

      2:

    [root@localhost git_data]# touch a
    [root@localhost git_data]# git add .
    [root@localhost git_data]# git commit -m "a"
    [master 63e4a55] a
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 a
    [root@localhost git_data]# git rm -rf a
    rm 'a'
    [root@localhost git_data]# git status
    # 位于分支 master
    # 要提交的变更:
    #   (使用 "git reset HEAD <file>..." 撤出暂存区)
    #
    #       删除:      a
    #
    [root@localhost git_data]# git commit -am "del a"
    [master 6d66750] del a
     1 file changed, 0 insertions(+), 0 deletions(-)
     delete mode 100644 a
    [root@localhost git_data]# git status
    # 位于分支 master
    无文件要提交,干净的工作区
    

     改名:

    [root@localhost git_data]# touch 123
    [root@localhost git_data]# touch qweer
    [root@localhost git_data]# git add .
    [root@localhost git_data]# git commit -am "add all"
    [master 591a1eb] del all
     2 files changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 123
     create mode 100644 qweer
    [root@localhost git_data]# git status
    # 位于分支 master
    无文件要提交,干净的工作区
    [root@localhost git_data]# ll
    总用量 0
    -rw-r--r--. 1 root root 0 4月  20 16:53 123
    -rw-r--r--. 1 root root 0 4月  20 16:53 qweer
    [root@localhost git_data]# git mv 123 haha
    [root@localhost git_data]# git status
    # 位于分支 master
    # 要提交的变更:
    #   (使用 "git reset HEAD <file>..." 撤出暂存区)
    #
    #       重命名:    123 -> haha
    #
    [root@localhost git_data]# git commit -am "mv 123 haha"
    [master 361b07e] mv 123 haha
     1 file changed, 0 insertions(+), 0 deletions(-)
     rename 123 => haha (100%)
    [root@localhost git_data]# git status
    # 位于分支 master
    无文件要提交,干净的工作区
    [root@localhost git_data]# ll
    总用量 0
    -rw-r--r--. 1 root root 0 4月  20 16:53 haha
    -rw-r--r--. 1 root root 0 4月  20 16:53 qweer
    

     避免花里胡哨

    [root@localhost git_data]# touch 123
    [root@localhost git_data]# git add .
    [root@localhost git_data]# git commit -am "add all"
    {root@localhost git_data]# git mv 123 haha
    [root@localhost git_data]# git commit -am "mv 123 haha"
    

    暂存区覆盖工作目录内容

    [root@localhost git_data]# echo 111 > haha
    [root@localhost git_data]# cat haha
    111
    [root@localhost git_data]# git status
    # 位于分支 master
    # 尚未暂存以备提交的变更:
    #   (使用 "git add <file>..." 更新要提交的内容)
    #   (使用 "git checkout -- <file>..." 丢弃工作区的改动)
    #
    #       修改:      haha
    #
    修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
    [root@localhost git_data]# git checkout -- haha
    [root@localhost git_data]# cat haha
    

     git  diff对比目录区、暂存区、本地仓库文件改动后的不同

    [root@localhost git_data]# echo 123456 > haha
    [root@localhost git_data]# cat haha
    123456
    [root@localhost git_data]# git diff
    diff --git a/haha b/haha
    index 58c9bdf..9f358a4 100644
    --- a/haha
    +++ b/haha
    @@ -1 +1 @@
    -111
    +123456
    [root@localhost git_data]# git diff --cached
    [root@localhost git_data]# git add .
    [root@localhost git_data]# git diff
    [root@localhost git_data]# git diff --cached
    diff --git a/haha b/haha
    index 58c9bdf..9f358a4 100644
    --- a/haha
    +++ b/haha
    @@ -1 +1 @@
    -111
    +123456
    [root@localhost git_data]# git commit -am "add all"
    [master 54ce921] add all
     1 file changed, 1 insertion(+), 1 deletion(-)
    [root@localhost git_data]# git diff
    [root@localhost git_data]# git diff --cached
    [root@localhost git_data]#
    

    git   log      # 查看日志信息

    [root@localhost git_data]# git log
    commit 54ce921cbe44c4c9c9de710978ff71339990f655
    Author: nsh <nsh@mail.com>
    Date:   Sat Apr 20 17:16:47 2019 +0800
    
        add all
    
    commit b72939161ede5f85558b0d3057a37670ca31c736
    Author: nsh <nsh@mail.com>
    Date:   Sat Apr 20 17:15:02 2019 +0800
    。。。。。。
    
    [root@localhost git_data]# git log --oneline
    54ce921 add all
    b729391 add all
    361b07e mv 123 haha
    591a1eb del all
    6d66750 del a
    63e4a55 a
    c282f44 del
    d3f42b7 add all
    
    [root@localhost git_data]# git log --oneline -p -1 -p显示具体行数 -1显示最近一行提交的具体信息
    54ce921 add all
    diff --git a/haha b/haha
    index 58c9bdf..9f358a4 100644
    --- a/haha
    +++ b/haha
    @@ -1 +1 @@
    -111
    +123456
    代码回滚:
    [root@localhost git_data]# git reset --hard 361b07e
    HEAD 现在位于 361b07e mv 123 haha
    [root@localhost git_data]# ll
    总用量 0
    -rw-r--r--. 1 root root 0 4月  20 17:23 haha
    -rw-r--r--. 1 root root 0 4月  20 16:53 qweer
    [root@localhost git_data]# git log --oneline
    361b07e mv 123 haha
    591a1eb del all
    6d66750 del a
    63e4a55 a
    c282f44 del
    git
    查看所有的历史提交
    [root@localhost git_data]# git reflog
    361b07e HEAD@{0}: reset: moving to 361b07e
    54ce921 HEAD@{1}: commit: add all
    b729391 HEAD@{2}: commit: add all
    361b07e HEAD@{3}: commit: mv 123 haha
    591a1eb HEAD@{4}: commit: del all
    6d66750 HEAD@{5}: commit: del a
    63e4a55 HEAD@{6}: commit: a
    c282f44 HEAD@{7}: commit: del
    d3f42b7 HEAD@{8}: commit (initial): add all
    查看HEAD指针具体指向那个版本
    [root@localhost git_data]# git log --oneline --decorate
    361b07e (HEAD, master) mv 123 haha
    591a1eb del all
    6d66750 del a
    63e4a55 a
    c282f44 del
    

     git分支-代码合并 

    两种创建分支的命令
    一:
    [root@localhost git_data]# git branch zhangsan
    [root@localhost git_data]# git checkout zhangsan
    切换到分支 'zhangsan'
    [root@localhost git_data]# git branch
      master
    * zhangsan
    二:
    [root@localhost git_data]# git branch
    * master
    [root@localhost git_data]# git checkout -b nsh
    切换到一个新分支 'nsh'
    [root@localhost git_data]# git branch
      master
    * nsh
    删除分支
    [root@localhost git_data]# git branch -d nsh
    已删除分支 nsh(曾为 54ce921)。
    [root@localhost git_data]# git branch
      master
    

    查看指针的指向

    [root@localhost git_data]# touch test
    [root@localhost git_data]# git add .
    [root@localhost git_data]# git commit -am "add test"
    [master 76911df] add test
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 test
    [root@localhost git_data]# git log --oneline --decorate
    76911df (HEAD, master) add test
    23a2218 add test
    54ce921 add all
    b729391 add all
    361b07e mv 123 haha
    591a1eb del all
    6d66750 del a
    63e4a55 a
    c282f44 del
    d3f42b7 add all
    [root@localhost git_data]# touch test-page
    [root@localhost git_data]# git add .
    [root@localhost git_data]# git commit -am "add test-page"
    [master dba91a4] add test-page
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 test-page
    [root@localhost git_data]# git log --oneline --decorate
    dba91a4 (HEAD, master) add test-page
    76911df add test
    23a2218 add test
    54ce921 add all
    b729391 add all
    361b07e mv 123 haha
    591a1eb del all
    6d66750 del a
    63e4a55 a
    c282f44 del
    d3f42b7 add all
    

     后续有新的内容随时添加..............................

  • 相关阅读:
    android 自定义日历控件
    android 常用类
    真假空格风波
    设计模式的初衷---“委托”有感
    pymysql.err.InterfaceError: (0, '')
    微信文章收藏到有道云笔记PC版只保留了标题
    SQL Server数据库字典生成SQL
    nhibernate常见错误
    NUnit
    使用ffmpeg截取视频
  • 原文地址:https://www.cnblogs.com/nshgo/p/10720346.html
Copyright © 2020-2023  润新知