zoukankan      html  css  js  c++  java
  • git版本控制工具

    本文介绍git版本控制工具

    1. 基本概念

      1.三种状态
          已提交
          已修改
          已暂存
      2.三个工作区
          Git仓库
              Git用来保存版本数据的地方
          工作目录
              编辑项目的地方
          暂存区域
              保存需要提交的文件信息
      
    2. 安装

      我们使用git命令来操作git,需要安装git软件
      下载地址 http://git-scm.com/download/win
      或者下载github,功能更强大 http://windows.github.com 
      
    3. 配置命令

      打开git命令窗口,配置用户名和邮箱
      git config --global user.name "yourname"
      git config --global user.email 2640199637@qq.com
      查看配置的信息
      git config --list
      git config user.name
      
    4. 基础

      1.创建仓库
          使用 git init 初始化git仓库
          在你的项目目录中添加一个文件demo.js
          输入 git add demo.js 添加文件
          然后 git status 查看工作区状态
          最后 git commit -m '我是注释' 提交文件到git仓库中
          再次 git status 查看工作区状态
          // 如果你要从已经存在的git项目copy下来,类似于svn的checkout
          git clone https://github.com/libgit2/libgit2 copy下来的项目就在libgit2目录下面
          git clone https://github.com/libgit2/libgit2 mylibgit 给项目指定自己的名字
      2.提交更新文件
          使用git status 查看工作区文件的状态
              modified 表示文件修改了
              Untracked files 表示有文件没有受git管理,也就是新增的文件
          上面这些情况可以使用git add filename 的形式添加文件到git中,这条命令是万能的
              再次运行 git status 
              Changes to be committed 表示文件已经被提交到暂存区了
          使用git status信息比较多,可以使用git status -s 或者 git status --short命令
              A 表示暂存区中有文件
              M 表示文件被修改了
              ?? 表示文件新增,没有受git管理
      3.忽略文件
          开发项目中像node_modules这类的文件无需受到git管理,可以忽略这些类似的文件
          首先在项目根目录中创建.gitignore文件
              下面是我在git中写的关于gitignore所有知识
                  # 这时gitignore的注释
                  # git使用标准的glob模式匹配,类似于正则表达式
                  # 使用 / 开头,防止递归搜索,也就是唯一指定
                  # 使用 / 结尾,表示指定目录,忽略目录所需
                  # 要忽略指定模式以外的文件和目录,取反即可,使用 !
                  # 什么是glob模式
                  # glob模式是简化的正则表达式
                  # *号表示匹配0或者多个字符
                  # [abc]中括号表示匹配任意一个括号内部的字符,[0-9]
                  # ?号表示只匹配任意一个字符 
                  # **号表示匹配任意多个中间目录,"a/**/c",这个" a/*/c "表示任意一个目录
                  .gitignore
                  node_modules/
              使用cat命令可以输出文件内容
                  cat .gitignore
      4.查看具体的文件做了哪些修改
          当你的文件中做了修改但是还没有add,可以通过 git diff 命令比较文件和暂存区中的文件做了哪些具体的修改
          当你的文件中做了修改但是已经add了,可以通过 git diff --staged 命令比较暂存区中的文件和git仓库中的文件做了哪些具体的修改
          神器: 
              使用 git difftool --tool-help 查看你的系统支持哪些图形化工具
              使用 git difftool 命令可以对你的文件做图形化展示对比,需要安装一个图形化插件,git会有提示,告诉你是否安装
              进入 vimdiff 之后,可以查看具体的变化,使用 ctrl + z 退出界面
      5.代码提交
          使用 git commit -m '提交说明' 提交暂存区的文件
          git commit -a -m '提交说明' 这种提交不需要经过add
      6.删除文件
          删除文件的操作可以使用add操作直接完成,也可以使用如下方法
          1.清除文件,工作区和git仓库都删掉
              git rm '你删除的文件名' 这样就将删除的文件做了标记,然后再commit代码,就ok了
              注意如果在删除之前,已经把文件add到暂存区了但是没有commit,这时就要用git rm -f '你删除的文件名' 强制删除文件,这时一种保护机制
          2.清除文件,工作区保留,git仓库干掉
              git rm --cached '你的文件名称' 这样就可以把暂存区中的文件删除,然后提交即可
          3.清除文件夹
              git rm -r demo/ 直接删除demo文件夹下面所有的文件和文件夹
              git rm命令后面可以跟其他的glob模式命令
      7.文件改名
          git mv demo.txt rename.txt 这句命令搞定
      8.查看提交历史
          git log 命令可以查看git仓库中所有的提交版本信息
          git log -p -2 显示最近两次提交的内容差异
          git log -stat 查看每次提交的简要统计信息
          --pretty用来展示不同的提交历史的格式,有如下子选项
              git log --pretty=online 每次提交历史放在一行展示
              git log --pretty=short 缩略信息
              git log --pretty=full 比较全的信息
              git log --pretty=fuller 很全的信息
              format可以用来指定自定义的信息展示格式
                  git log --pretty=format:"%h - %an, %ar : %s"
                  后面的配置选项有很多,感兴趣自己去查吧
              另外oneline和format可以再结合--graph,展示分支,合并的信息
                  git log --pretty=oneline --graph
          还有一部分没有介绍,是关于限制信息输出的内容,可能用处不大
      9.撤销操作
          1.修改版本注释信息或者添加提交文件
              git仓库中的每一个版本都是一个系统的项目,如果你有的文件忘记提交了,又不想重新发布一个版本的话,可以使用 git commit --amend '注释' 这样的方式来合并已提交的版本
          2.如果你的文件你提交到暂存区了,现在想让他回到工作区中
              使用 git add * 可以将工作区中所有的文件提交到暂存区中
              使用 git reset HEAD '你的文件名' 这条命令,回到工作区的状态
          3.如果你修改的文件你不想要了,你想回到最开始的状态
              使用 git checkout -- '你的文件名' 这条命令,相当于从git仓库的最新版本中copy出文件
      10.远程仓库的使用 
          如果你的项目是从远程第三方服务器上pull下来的那么可以直接使用 remote 命令,查看当前的连接仓库的名称,使用 git remote -v 可以查看更为详细的信息,这里的第三方服务器我用的码云
          一般的工作流程
              使用 git clone 命令克隆远程仓库,然后使用 git pull 命令,可以从远程仓库上抓取最新的数据合并到本地当前分支,使用 git push 命令,可以将你自己的代码推送到远程服务器上
              git clone url
              git remote // 默认你的仓库名称是origin
              git pull origin master
              git push origin master
          删除远程仓库,使用 git remote rm origin
          重命名远程仓库,使用 git remote rename pb paul 将pb换成paul
      // 到这里,你已经可以完整的使用git开发项目了,如果想继续深入,可以接着往下学
      
    5. git分支

      git分支其实很简单,git分支其实和master是一回事,打个简单的比方,git仓库是历史的长河,master就是现在的你,而分支是另外一个你,你现在处于master上面,你正在这个历史中生活了10年,但是你的分支没有变化,你没有去动它,它就不变,还是10年之前的时间点,如果你切换到分支上面,就相当于时间倒流了10年,如果你在这个分支上生活了20年,那么此时你再切换到master上面,你又相当于时光倒流10年,明白了吧,这就是分支,注意上面讲到的一个历史长河,也就是说不管分支多少永远都指的是一个git仓库
      创建分支的命令 git branch testing 创建一个名为testing的分支
      查看当前的分支状态 git log --oneline --decorate
      分支切换 git checkout testing 
      查看分支之前的编辑修改信息 git log --oneline --decorate --graph --all
      创建分支和切换到分支上面的命令简写 git checkout -b testing
      ----------------
      下面我来介绍git分支合并和冲突的解决
      1.如果创建分支之后,主分支没有做任何修改
          这种情况下,合并分支非常简单
          首先切回到主分支上 git checkout master
          然后 git merge testing 
          这样 git当前主分支的时间点和testing分支一样了
          现在testing分支已经没用了可以直接删除,git branch -d testing
      2.如果分支创建之后,分支做了修改,主分支被其他人做了修改,这时合并方法如下
          这种情况下操作和上面是一样的
          git checkout master
          git merge testing 
          git brach -d testing
          但是你要知道,git默默的将分支和主分支的最新的代码合并了,并且这个合并可能出现冲突
          如果出现冲突了,git合并操作会暂停,等待你解决冲突,使用git status可以查看哪些文件有冲突,手动找到这些文件,然后做出修改,将修改后的文件使用 git add 的命令暂存起来,就可以告诉git冲突已经解决,然后再操作上面命令即可,关于冲突解决还有图形化工具,在这里不再赘述
      ----------------
      下面介绍git的分支管理工具
      使用 git branch 命令可以查看所有的分支,和当前是哪个分支
      使用 git branch -v 可以查看每一个分支的最后一次提交
      使用 git branch --merged 可以查看已经合并但是没有删除的分支
          使用 git branch -d testing 可以删除已经合并的分支
      使用 git branch --no-merged 可以查看没有合并的分支
          使用 git branch -D testing 可以强制删除没有合并的分支
      
    6. 使用公钥

      ssh-keygen -t rsa生成私钥和公钥,公钥用来放在第三方git库中
      放好了之后,自己和别人都可以对代码进行修改和下载,使用git地址,并且免去了验证
      
  • 相关阅读:
    hihocoder 1142 三分·三分求极值(三分)
    poj 3304 Segments(计算直线与线段之间的关系)
    poj 1269 Intersecting Lines(判断两直线关系,并求交点坐标)
    poj 2398 Toy Storage(计算几何 点线关系)
    poj 2318 TOYS(计算几何 点与线段的关系)
    计算几何基础(模板)
    Jmeter-基本组成
    java-面向对象
    性能测试基础
    java-多线程
  • 原文地址:https://www.cnblogs.com/ye-hcj/p/7406861.html
Copyright © 2011-2022 走看看