GIT

git简介html

  • linus用c语言编写
  • 2005年诞生
  • 分布式版本管理系统
  • 速度快,适合大规模,跨地区多人协同开发

git生态python

  • git 分布式版本管理系统
  • gitlab git私库解决方案
  • github git共有库解决方案

git安装git

  • 不建议用yum install git,安装的是1.8版本,生产环境2.7以上
  • yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker epel-release
  • wget https://github.com/git/git/archive/v2.7.4.zip
  • unzip v2.7.4.zip
  • make prefix=/usr/local/git all
  • make prefix=/usr/local/git install
  • rm -fr /usr/bin/git
  • ln -s /usr/local/git/bin/git /usr/bin/git
  • git --version

git配置github

  • 设置与配置 git config
  • 帮助命令 git help
  • 初始化
  • [root@localhost test]# git init 该目录受版本库控制
  • [root@localhost test]# git config --global user.name "joker" 谁操做
  • [root@localhost test]# git config --global user.email "joker@126.com" 操做者邮箱
  • [root@localhost test]# git config --list
  • user.name=joker
  • user.email=joker@126.com
  • core.repositoryformatversion=0
  • core.filemode=true
  • core.bare=false
  • core.logallrefupdates=true
  • 获取
  • git clone http://xxx.git

四个区域缓存

  • 给咱们的直觉,本地仓库,暂存区域,工做目录就是咱们初始化的目录

四种状态curl

  • 工做目录新放入的文件叫作为追踪的文件untracked(这个新文件只能说是放到文件里面了,和git库没有任何关联)
  • git add 直接推送暂存区域staged
  • commit 存成一个版本,变成未被修改的状态unmodified,放到了本地仓库
  • 经过修改这个文件 就会从未被修改的状态变成修改的状态Modifed,那修改的文件会从本地仓库从新拉回到工做目录里面来
  • git add 放到了暂存区域staged
  • commit 存成一个版本,放到本地仓库里面

经常使用命令分布式

  • git add               加入暂存(索引区)
  • git status                查看状态
  • git status -s            状态概览
  • git diff                    还没有暂存的文件
  • git diff --staged      暂存区文件
  • git commit -m ""      提交更新
  • git reset                  回滚
  • git rm                     从版本库中移除
  • git rm --cached README 从暂存区中移除
  • git mv                     至关于 git rm git add三个命令
  • [root@localhost test]# echo "pay" > pay.html
    [root@localhost test]# echo "center" > news.html
    [root@localhost test]# git add pay.html news.html 
    [root@localhost test]# git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
            new file:   news.html
            new file:   pay.html
    
    [root@localhost test]# git rm --cached pay.html 
    rm 'pay.html'
    [root@localhost test]# git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
            new file:   news.html
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
            pay.html
     

分支管理gitlab

  • 每次切换分支,也就是指针变更的时候

分支命令fetch

  • git branch
  • git branch –v
  • git branch –merged
  • git branch --no-merged
  • git branch -b testing
  • git checkout
  • git merge              合并,注意指针,在master主分支合并分支
  • git log
  • git stash
  • git tag

git高级this

git checkout命令

 

  • git checkout 用于切换分支
  • git checkout -- file.ext 撤销对文件的修改,从本地库里面拉出来覆盖到工做目录
  • [root@localhost test]# echo "222" >> index.html 
    [root@localhost test]# 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:   index.html
    
    no changes added to commit (use "git add" and/or "git commit -a")
    [root@localhost test]# git checkout -- index.html 
    [root@localhost test]# git status
    On branch master
    nothing to commit, working directory clean
    [root@localhost test]# cat index.html 
    joker  

git reset命令

意义在于,区域用不用保留

  • --soft 缓存区和工做目录都不会被改变
  • --mixed 默认选项。缓存区和你指定的提交同步,但工做目录不受影响
  • --hard 缓存区和工做目录都同步到你指定的提交
  • 工做目录的回滚
    git checkout -- file.ext 撤销对文件的修改
    暂存区的回滚
    git rm --cached 撤回缓存区的文件

  • [root@localhost test]# echo 333 >> index.html 
    [root@localhost test]# echo 333 >> news.html 
    [root@localhost test]# git add news.html 
    [root@localhost test]# git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
            modified:   news.html
    
    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:   index.html
    
    [root@localhost test]# git log
    commit c203cce4db08d7787c48cf6fe7f5edda50b7c906
    Merge: fe7194c 885b5d3
    Author: joker <joker@126.com>
    Date:   Mon Dec 17 22:24:56 2018 -0500
    
        Merge branch 'about'
    
    commit 885b5d3dedfc59346535588685f4f41464f85594
    Author: joker <joker@126.com>
    Date:   Mon Dec 17 22:13:14 2018 -0500
    
        about
    
    commit fe7194ca1d692cf55316481b2d34b3de2c354b9e
    Author: joker <joker@126.com>
    Date:   Mon Dec 17 22:05:06 2018 -0500
    
        pay
    
    commit c415b7b4c9d5c7dc6abf00fedca3a0d1307e524f
    Author: joker <joker@126.com>
    Date:   Mon Dec 17 10:06:55 2018 -0500
    
        news
    
    commit 8c8152d501f7eb25a78c4d576a9ff2ce834ae65f
    Author: joker <joker@126.com>
    Date:   Mon Dec 17 10:01:32 2018 -0500
    
        first commit
    [root@localhost test]# git reset --hard c415b7b(回滚到哪一次提交)
    HEAD is now at c415b7b news
    [root@localhost test]# git status
    On branch master
    nothing to commit, working directory clean
    [root@localhost test]# git log
    commit c415b7b4c9d5c7dc6abf00fedca3a0d1307e524f
    Author: joker <joker@126.com>
    Date:   Mon Dec 17 10:06:55 2018 -0500
    
        news
    
    commit 8c8152d501f7eb25a78c4d576a9ff2ce834ae65f
    Author: joker <joker@126.com>
    Date:   Mon Dec 17 10:01:32 2018 -0500
    
        first commit

文件层操做

 

  • 运行git reset HEAD foo.py 会将当前的foo.py从缓存区中移除出去,而不会影响工做目录中对foo.py的更改。
  • [root@localhost test]# echo "222" > pay.html
  • [root@localhost test]# git add pay.html
  • [root@localhost test]# git status
  • On branch master
  • Changes to be committed:
  • (use "git reset HEAD <file>..." to unstage)
  • new file: pay.html
  • [root@localhost test]# git reset pay.html

git reflog

  • 分析你全部分支的头指针的日志来查找出你在重写历史上可能丢失的提交
  • [root@localhost test]# git reflog
    c415b7b HEAD@{0}: reset: moving to c415b7b4c9d5c7dc6abf00fedca3a0d1307e524f
    885b5d3 HEAD@{1}: merge res: Fast-forward
    c415b7b HEAD@{2}: checkout: moving from res to master
    885b5d3 HEAD@{3}: checkout: moving from 885b5d3dedfc59346535588685f4f41464f85594 to res
    885b5d3 HEAD@{4}: checkout: moving from master to 885b5d3
    c415b7b HEAD@{5}: checkout: moving from reset to master
    c415b7b HEAD@{6}: checkout: moving from master to reset
    c415b7b HEAD@{7}: checkout: moving from 885b5d3dedfc59346535588685f4f41464f85594 to master
    885b5d3 HEAD@{8}: checkout: moving from master to 885b5d3
    c415b7b HEAD@{9}: reset: moving to c415b7b
    c203cce HEAD@{10}: merge about: Merge made by the 'recursive' strategy.
    fe7194c HEAD@{11}: checkout: moving from about to master
    885b5d3 HEAD@{12}: checkout: moving from master to about
    fe7194c HEAD@{13}: checkout: moving from about to master
    885b5d3 HEAD@{14}: commit: about
    c415b7b HEAD@{15}: checkout: moving from master to about
    fe7194c HEAD@{16}: commit: pay
    c415b7b HEAD@{17}: checkout: moving from about to master
    c415b7b HEAD@{18}: checkout: moving from master to about
    c415b7b HEAD@{19}: commit: news
    8c8152d HEAD@{20}: commit (initial): first commit
    [root@localhost test]# git checkout 885b5d3
    Note: checking out '885b5d3'.
    
    You are in 'detached HEAD' state. You can look around, make experimental
    changes and commit them, and you can discard any commits you make in this
    state without impacting any branches by performing another checkout.
    
    If you want to create a new branch to retain commits you create, you may
    do so (now or later) by using -b with the checkout command again. Example:
    
      git checkout -b <new-branch-name>
    
    HEAD is now at 885b5d3... about
    [root@localhost test]# git status
    HEAD detached at 885b5d3
    nothing to commit, working directory clean
    [root@localhost test]# git branch rese
    [root@localhost test]# git checkout rese
    Switched to branch 'rese'
    [root@localhost test]# git log
    commit 885b5d3dedfc59346535588685f4f41464f85594
    Author: joker <joker@126.com>
    Date:   Mon Dec 17 22:13:14 2018 -0500
    
        about
    
    commit c415b7b4c9d5c7dc6abf00fedca3a0d1307e524f
    Author: joker <joker@126.com>
    Date:   Mon Dec 17 10:06:55 2018 -0500
    
        news
    
    commit 8c8152d501f7eb25a78c4d576a9ff2ce834ae65f
    Author: joker <joker@126.com>
    Date:   Mon Dec 17 10:01:32 2018 -0500
    
        first commit
    [root@localhost test]# git checkout master
    Switched to branch 'master'
    [root@localhost test]# git log
    commit c415b7b4c9d5c7dc6abf00fedca3a0d1307e524f
    Author: joker <joker@126.com>
    Date:   Mon Dec 17 10:06:55 2018 -0500
    
        news
    
    commit 8c8152d501f7eb25a78c4d576a9ff2ce834ae65f
    Author: joker <joker@126.com>
    Date:   Mon Dec 17 10:01:32 2018 -0500
    
        first commit
    [root@localhost test]# git merge rese
    Updating c415b7b..885b5d3
    Fast-forward
     about.html | 1 +
     1 file changed, 1 insertion(+)
     create mode 100644 about.html
    [root@localhost test]# git log
    commit 885b5d3dedfc59346535588685f4f41464f85594
    Author: joker <joker@126.com>
    Date:   Mon Dec 17 22:13:14 2018 -0500
    
        about
    
    commit c415b7b4c9d5c7dc6abf00fedca3a0d1307e524f
    Author: joker <joker@126.com>
    Date:   Mon Dec 17 10:06:55 2018 -0500
    
        news
    
    commit 8c8152d501f7eb25a78c4d576a9ff2ce834ae65f
    Author: joker <joker@126.com>
    Date:   Mon Dec 17 10:01:32 2018 -0500
    
        first commit  

远程仓库

远程命令

  • git clone https://github.com/jokerbj/cmdb.git
  • git pull                         拉下来,合并
  • git fetch                       拉下来,手动合并
  • git push origin master    上传
  • git remote                     查看远程分支
  • git remote –v                查看远程地址
  • git remote add origin http://xxx  添加远程地址
  • git remote show origin
  • git remote rename pb paul 变动远程地址名字
  • git tag -a v1.0 -m ‘abc’    

标签管理

  • git tag -a v1.4 -m 'my version 1.4‘
  • git show v1.4 git tag -a v1.2 9fceb02 对历史打标签
  • git push origin v1.5 将标签推向远程
  • git push origin --tags 推送多个标签
  • git checkout -b version2 v2.0.0 检出标签
相关文章
相关标签/搜索