• git常用语句


    1.安装git,也适用于升级

    yum -y install gcc zlib-devel openssl-devel curl-devel 
    expat-devel gettext-devel perl-ExtUtils-MakeMaker
    mkdir -p /server/tools
    cd /server/tools
    wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.7.4.tar.gz
    tar xf git-2.7.4.tar.gz
    cd git-2.7.4/
    make prefix=/usr/local/git all
    make prefix=/usr/local/git install
    rm -rf /usr/bin/git
    ln -s /usr/local/git/bin/git /usr/bin/git
    git --version
    

    2.使用git

    工作区:就是在你的电脑里能看到的目录,比如创建的test;

    版本库:工作区中有一个隐藏目录.git,它不算工作区,而是git的版本库,git的版本库里面存放了很多的东西,其中最重要的就是称为stage的暂存区,有git为我们自动创建的第一个分支master,以及指向master的一个指针叫head.

    mkdir test
    git init
    git config --global user.name "lixiang"
    git config --global user.email "1746465163@qq.com"
    git config --list
    

    在test目录中创建一个文件,此时文件的状态是Untracked(未被追踪);

    git add之后,文件被放到暂存区,状态变为Staged(已暂存);

    git commit,文件被放到本地仓库,状态变为Unmodified(未被修改);

    编辑了这个文件后,它会从本地仓库被拉取到工作目录,状态变为Modified(被修改了).

    echo "This is your First Page" > index.html
    git status
    Untracked files
    git add index.html
    git commit -m "first commit"
    # git rm --cached <file>演示
    echo "pay module" > pay.html
    echo "new center" > news.html
    git add news.html pay.html
    # 此时发现pay.html还没开发完,不想commit这个文件了,就需要在暂存区将其删除
    git rm --cached pay.html
    

    3.分支管理

    git status
    On branch master
    git branch about    # 会在当前所在的提交对象上创建一个指针
    git checkout about  # Switched to branch 'about' 切换到分支about
    echo "about" > about.html
    git branch  # 查看自己当前所在的分支
    git add .
    git commit -m "about's index.html"
    echo 'second page' > second.html
    git add .
    git commit -m "second page"
    git checkout master  # 此时master上有两次提交,about上有四次提交
    git merge about      # 在master上融合分支about
    git branch --merged  # 查看已融合的分支
    git branch --no-merged # 查看未融合的分支
    

    4.reset

    echo "this is second line" >> index.html
    echo "qwer" >> news.html
    git add news.html
    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
    

    查看日志

    git log
    commit 1ed03656c29f2742314f054c8aba8705c52016d5
    Author: lixiang <1746465163@qq.com>
    Date:   Wed Dec 26 22:06:06 2018 +0800
    
        second page
    
    commit 0e8f8c5878734792e9a94cc435cbeb7b4cd7b369
    Author: lixiang <1746465163@qq.com>
    Date:   Wed Dec 26 22:03:11 2018 +0800
    
        about's index.html
    
    commit ab0e299c14f1357df828647a1b0476f829a2815a
    Author: lixiang <1746465163@qq.com>
    Date:   Wed Dec 26 20:37:51 2018 +0800
    
        commit news
    
    commit 672cc2a692754391725d7179d4d217a552e666a8
    Author: lixiang <1746465163@qq.com>
    Date:   Wed Dec 26 20:29:47 2018 +0800
    
        first commit
    
    git reset --hard HEAD~1
    HEAD is now at 0e8f8c5 about's index.html
    ls
    about.html  index.html  news.html
    

    --soft:缓存区和工作目录都不会被改变(只回撤本地版本库)

    --mixed:默认选项.缓存区和你指定的提交同步,但工作目录不受影响(回撤本地版本库和缓存区)

    --hard:缓存区和工作目录都同步到你指定的提交(回撤本地版本库、缓存区和工作目录)

    git reset --hard 1ed03656  # 回到第四次提交
    # 如果嫌输出的信息太多,可以使用--pretty=oneline
    git log --pretty=oneline
    ls
    about.html  index.html  news.html  second.html
    git diff HEAD -- filename可以查看工作区和版本库里面最新版本的区别
    

    5.checkout和reflog

    git reflog:把之前的ID都显示出来	
    	
    0e8f8c5 HEAD@{0}: reset: moving to HEAD~1
    1ed0365 HEAD@{1}: reset: moving to 1ed03656
    0e8f8c5 HEAD@{2}: reset: moving to HEAD~1
    1ed0365 HEAD@{3}: merge about: Fast-forward
    ab0e299 HEAD@{4}: checkout: moving from about to master
    1ed0365 HEAD@{5}: commit: second page
    0e8f8c5 HEAD@{6}: checkout: moving from master to about
    ab0e299 HEAD@{7}: checkout: moving from about to master
    0e8f8c5 HEAD@{8}: checkout: moving from about to about
    0e8f8c5 HEAD@{9}: commit: about's index.html
    ab0e299 HEAD@{10}: checkout: moving from master to about
    ab0e299 HEAD@{11}: commit: commit news
    672cc2a HEAD@{12}: commit (initial): first commit	
    	
    git checkout  1ed0365	
    git status	
    HEAD detached at 1ed0365
    nothing to commit, working directory clean	
    # 此时用git log查看,有四次提交,但创建一个新分支-reset,切换到reset,
    # 再切回master,发现status显示正常,但log只有三次,说明master没有真正回到第四次
    git branch reset
    git checkout reset
    git checkout master
    git merge reset
    # 我觉得是checkout的问题,用reflog查出id,再用reset回滚应该也行
    git reset --hard 1ed0365
    

    git checkout有两个作用:在分支级别,是将指针切换到不同的提交对象;

    git checkout -- filename:在文件级别,是撤销对文件的修改.

    a.修改后还没有被放到暂存区,撤销修改就回到和版本库一模一样的状态;

    b.已经添加到暂存区后,又作了修改,撤销修改就回到添加到暂存区后的状态.

    原理:用版本库里的版本覆盖被修改的文件.

    假如将文件提交到了暂存区,use "git reset HEAD <file>..." to unstage,用reset撤销缓存区的变更;

    假如将文件commit到了本地版本库,可以用reset回滚;

    假如将本地版本库推送到了远程版本库,可以推送一个符合你想要的标准的文件,一步步到最后,覆盖那个远程版本库上错误的文件.

    6.删除文件

    先创建文件,后add,再commit,然后删除工作区的文件
    git add test.txt
    git commit -m "del test"
    rm -rf test.txt
    现在你有两个选择:一是确实要从版本库中删除该文件,那就用删掉,并且git commit
    git rm test.txt
    git commit -m "remove test.txt"
    如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,
    你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容.
    另一种情况是删错了,因为版本库里还有呢,可以把误删的文件恢复到最新版本:
    git checkout -- test.txt
    git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以"一键还原".
    

    7.标签管理

    git tag -a v1.0 -m "version1.0 released"
    git tag -d v1.0
    # 如果要推送某个标签到远程
    git push origin v1.0
    # 一次性推送全部尚未推送到远程的本地标签
    git push origin --tags
    # 如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除,然后,从远程删除
    git tag -d v0.9
    git push origin :refs/tags/v0.9
    

    参考博客:https://www.cnblogs.com/kevingrace/p/5569728.html

  • 相关阅读:
    搭建CDH的yum本地源
    搭建一个离线yum源
    VMware主机 几次断电后,挂载的磁盘报错了,系统无法启动
    vm workstation15 迁移至ESXi6.7步奏
    ESXi6.7在 ASUS PRIME B360-PLUS 主板上安装报错
    php常用函数
    PHP函数
    php语句
    TSQL语句练习题
    php的基础
  • 原文地址:https://www.cnblogs.com/fawaikuangtu123/p/10331214.html
Copyright © 2020-2023  润新知