git 的使用

   代码协同管理工具

   1. 防止代码丢失,做代码备份
   2. 做代码的版本管理,创建多个版本或者节点,在多版本之间切换
   3. 可以将代码在多人之间简单的传输共享
   4. 可以方便多人协同开发,开辟各自分支和分支管理

   什么是git

   git是一个开源的分布式版本控制系统,可以用于高效的管理大小项   目。

   分布式 : 每个节点关系平等,都保存完整代码,节点之间相互推             送或者下载代码。工作方式多样

   集中式 : 有明确的中央服务器统一管理代码,每个节点将代码上             传中央服务器或者从中央服务器下载。逻辑简单

   git特点
     * git可以管理各种文件,特别是代码项目,多在*nix系统中使用
     * 是开源的系统,是唯一可以操作github的管理工具
     * git是分布式管理,不同于集中式,这也是和svn最大的差别
     * git 可以脱网操作,传输速度更快
     * git的安全性很强,有全球唯一的commit版本号
     * git的分支管理很强大,可以方便多人协同工作
 
git安装

    sudo apt-get install git


git 基本配置

    git  config

    配置级别
        1. 系统中所有的用户均使用的配置
           命令 : git  config  --system
           配置文件 : /etc/gitconfig

    e.g. 配置git用户
  sudo git config --system user.name  Tedu

        2. 当前用户的所有项目均使用的配置
           命令: git config  --global
           配置文件 : ~/.gitconfig
 
           e.g. 配置用户邮箱
                git config --global  user.email tarena@tedu.cn

        3. 只在当前项目中使用的配置
           命令: git  config  (命令要在git项目文件夹中执行)
           配置文件: project/.git/config

           e.g.  配置编译器
                 git config core.editor vscode
           
        4. 查看当前配置
           git  config  --list
     
git 基本概念

工作区 : 通过自己的主机操作的git目录

暂存区 : 用来记录你工作的行为,作为暂时保存

本地仓库 : 本地用来备份同步工作区内容的区域

远程仓库 : 其他主机的git仓库


git的基本操作命令

   初始化仓库
       git  init
      
       * 初始化仓库后产生.git目录为git的管理目录,初始化仓库的         目录中的内容即可使用git管理


   查看工作分支状态
       git status
      
       * 默认工作分支为master,可以通过创建新的分支切换


   文件提交到暂存区
       git  add  [file]

       * 可以一次提交多个内容,中间用空格隔开
       * 提交的内容可以使文件也可以是目录
       * 如果想将当前目录下所有内容都提交也可以使用 * 表示
  
       删除暂存区的记录
       git  rm  --cached  [file]      (如果是目录加 -r)


    将暂存区记录的修改内容同步到本地仓库
        git  commit   -m  "some message"

        * -m 为添加的附加信息
        * 当工作区和本地仓库内容一致是git status提示工作区干净


    查看提交日志
        git  log
        git  log   --pretty=oneline


工作区操作

    查看工作区文件和本地仓库的差异
        git  diff  [file]

    放弃工作区文件修改
        git  checkout  --  [file]

    恢复本地仓库文件到工作区
        git  checkout  [file]


文件的移动和删除
  
    删除工作区文件并提交到暂存记录
        git  rm  [file]

    移动工作区文件并提交到暂存记录
        git  mv  file  dir
 
    * rm  mv 的用法和shell命令rm mv相同,操作后直接commit同步      到本地仓库


版本控制命令
  
    回到之前版本
        git  reset  --hard  HEAD^
 
        * HEAD 后几个^表示回到之前的几个版本

    通过commit_id回到指定的版本
        git  reset  --hard  commit_id


    查看操作日志
        git reflog

        * 获取到操作记录后可以根据commit_id去往较新的版本


标签管理

    什么是标签 : 即在当前工作位置添加快照,保存项目的版本信息                  ,一般用于项目版本的迭代

    创建标签
        git  tag  v1.0

        * 默认会在最新的commit_id处打标签


        查看标签
           git  tag  查看所有标签
           git  show  V2.0  查看某个标签的具体信息

        在某个指定commig_id处打标签
           git  tag  v0.9  [commit_id]

        回到某个标签的版本
           git reset --hard  v0.9

        删除标签
           git  tag  -d  v2.0


保存临时工作区

   创建临时工作区
       git stash

       * 将工作区修改内容暂时封存,恢复到最近一个“干净”状态

   查看保存的工作区
       git stash  list

   应用某个工作区
       git stash apply stash@{1}
    
       * 新的工作区总是为stash@{0},老的工作区会向下排列

       应用上一个工作区,并删除之
       git  stash  pop


   删除工作区
       git  stash drop  stash@{0}  删除某一个
       git  stash clear   删除所有

前情回顾
1. match 对象 : match  finditer 等函数生成
       group()
2. flags  re.I   re.S  re.M   re.X

3. git
     git的特点
     git的安装
     git的配置  git config
     git基本命令 : git init
                    git add
                    git commit
                    git status
                    git log
                    git mv
                    git rm
                    git diff
                    git checkout

     git版本控制 : git  reset  --hard  HEAD^
                                        commit_id
                    git reflog

     git 标签管理 : git  tag   v1.0  -m 'xxxxx'
                     git  show  v1.0
                     git  reset  --hard  v1.0
                     git tag -d v1.0

     git 的临时工作区: git  stash
                        git  stash list
                        git  stash apply  stash@{1}
                        git  stash drop  stash@{0}
                                   clear
*********************************************************

分支管理

    什么是分支?
        分支即每个人在获取原有分支(master)代码的基础上,作为        自己的工作环境,单独开发,不会影响其他分支操作。开发完        成后再同意合并到主线分支。

    好处 : 安全,不影响其他人工作,自己控制进度
    问题 : 冲突,降低耦合度可以有效地减少冲突

查看当前分支
    git  branch

    前面带 * 的表示当前正在工作的分支

创建分支
    git  branch  [branch_name]

    * 创建分支之前尽量保证原分支是干净的,避免合并时产生冲突

切换工作分支
    git  checkout  [branch] 

创建并切换到新的分支
    git checkout -b   [branch_name]

合并分支
    git  merge  [branch]

删除分支
    git branch -d  [branch]

    强制删除未合并分支
    git  branch  -D  [branch]


远程仓库
    在远程主机上的仓库。git时分布式的,每一台主机上的git结构基    本相同,只是把其他主机上的git仓库叫做远程仓库

    创建共享仓库 :
    1. 创建目录
       mkdir  gitrepo
  
    2. 设置仓库文件夹的属主
       chown  tarena:tarena gitrepo

    3. 创建共享仓库
       git init  --bare  aid.git

    4. 设置git项目文件夹数组
       chown  -R  tarena:tarena aid.git


添加远程仓库

    git  remote add  origin     tarena@127.0.0.1:/home/tarena/gitrepo/aid.git


向远程主机推送分支
    git  push  -u  origin  master


从远程主机获取项目
    git  clone  tarena@127.0.0.1:/home/tarena/gitrepo/aid.git


将代码同步到远程主机
    git  push


将远程仓库内容拉取到本地
    git  pull
    git  fetch  (获取远程分支到本地,但是暂时不合并)

删除已有的远程主机
    git remote rm origin


github

   开源的项目社区网站,提供丰富的开源项目,也为用户提供项目管     理服务

   git是github唯一指定的代码管理工具

   网址 : https://github.com

   创建新的仓库: 右上角 + --》new repository -->填写信息

   操作github :
      1. git  remote  连接远程仓库
      2. 通过 git  push 上传代码
 
      * github就是一个远程仓库