git入门 常用命令总结

Git基本操作

  • 安装git

    sudo apt-get install git

  • 创建版本库

    git init

  • 版本创建与回退

    • 版本创建

      • 加入暂存区

        • 文件修改或增加后

          git add filename

        • 删除文件

          git rm filename

          或者

          rm filename

          git add filename

      • 提交暂存区内容到版本库

        git commit -m 'version name'

    • 版本记录查看

      git log

      • 以简短形式查看

        git log --pretty=oneline

      • 仅查看少数记录

        git log -n

      • 以连接线形式查看

        git log --graph

    • 版本回退

      git reset --hard HEAD^

      git reset --hard HEAD~3

    • 撤销版本回退

      git reset --hard commit_id

      查看操作记录

      git reflog

  • 工作区和暂存区

    • 工作区:就是工程项目所在目录
  • 暂存区:.git文件夹是git的版本库,其中最重要的就是称为stage的暂存区,还有git 自动创建的第一个分支master,以及指向master的指针HEAD(每次commit后HEAD指向最新版本),git add把文件修改添加到暂存区,git commit提交修改,实际上就是把暂存区的所有内容提交到当前分支

  • 查看工作区状态命令

    git status

  • 撤销修改

    • 修改后未进行git add/rm的情况

      git checkout -- filename

    • 修改后已进行git add/rm的情况

      • 首先取消暂存区该文件的暂存

        git reset HEAD filename

      • 再使用上面命令进行复原

        git checkout --filename

    • 修改后已进行git add git commit

      只能进行版本回退来恢复

  • 对比文件不同

    • 对比工作区和某个版本中文件的不同

      git diff HEAD_pointer -- filename(In the working directory)

      ---对应HEAD指向版本的文件,+++代表工作区中文件

    • 对比两个版本中文件的不同

      git diff HEAD HEAD^ -- filename

      ---对应HEAD版本的文件

      +++对应HEAD^版本的文件

Git 分支操作

多个分支可以理解为互不干扰的流水线

  • 分支基本操作

    • 分支创建与合并

      默认在主分支mater上进行操作,HEAD严格来说不是指向commit,而是指向分支,分支的指针才是指向提交的,即HEAD指向的是当前分支

      创建新分支一定程度上可以理解为创建了一个新的分支指针

      • 查看当前有几个分支和当前所在分支

        git branch

        *表示当前HEAD所指向的分支

      • 创建分支

        git branch branchname

      • 切换分支

        git checkout branch_name

      • 创建并切换到新分支

        切换即改变HEAD所指向的分支

        git checkout -b branch_name

        新分支有旧分支的所有内容

      • 合并分支

        git merge branch_name

        fast-forward表示快速合并,即仅仅移动分支指针,默认情况下使用快速合并

  • 解决分支冲突

    即在两个分支中对同一个文件进行了commit

    此时合并时候存在分支冲突,此时用git status查看分支冲突对应的文件

    然后用编辑器查看相应文件,git用<<<<<<<,=======,>>>>>>>>标记出不同分支的内容,

    通过手动修改文件并进行add和commit后实现手动解决分支冲突

  • 分支管理策略

    合并分支是,如果可能,git默认使用fast forward模式,但是有些快速合并不能合并修改但不会产生分支冲突(例如在两个分支中分别修改了不同的文件),这个时候git会自动在合并之后做一次新的comit

    这种情况下会自动跳出GNU Nano,用来输入commit的注释

  • Bug分支

    • 强制禁用fast forward模式, git会在merge时生成一个新的commit

      git merge --no-ff -m 'annotation' branch_name

    • 储存和复原分支现场

      即需要切换到bug分支时,本分支的内容还未进行commit,则需要进行现场保存

      Bug修复过程

      • 将工作现场储藏起来

        git stash

      • 创建并切换到bug分支

    • 在该分支中修复bug后进行commit
      将bug分支与master分支进行禁用fast forward合并

  • 修复bug完成后回到原来编辑的分支继续

    - 查看分支现场储存列表
      `git stash list`
    
    - 恢复工作现场 
      `git stash pop`
    
posted @ 2019-05-31 23:55  GMonster  阅读(93)  评论(1编辑  收藏  举报