1 git 应用
2 git 仓库的创建  
3 git 的回滚,删除 ,checkout 
4 git 和远程仓库的关联

============================================================================================
==== 1 git 应用
   maven 项目生命周期管理工具   
   git 开源的,分布式的版本库

   1) 下载,安装 
     git 官网  https://git-scm.com/

      Git-2.24.1.2-64-bit.exe

   2) 打开 Git Bash 命令行

     可以直接双击桌面图标
     或右键的方式
     或直接在DOS窗口操作


        Git Bash  下常用的 Linux 命令

         -ls   //列目录
         -ll   //相当于 ls -l
         -ls -al //显示所有的文件,包扩隐含的
         -clear //清屏
         -ctl +l //清屏
         -touch //建文件
         -vim  //编辑文件
         -pwd  //查看当前路径

         附: vim 命令
         vim a.txt  然后按 i ,进入编辑模式,编辑,完毕以后,按 esc 进入 指令模式,再按 :wq 保存退出 (有时候要用wq! ,表示强制保存退出)

==== 2 git 仓库的创建,和提交 
        git 的信息查询        
          (1) git config -l  查看当前配置信息
                        diff.astextplain.textconv=astextplain
                        filter.lfs.clean=git-lfs clean -- %f
                        filter.lfs.smudge=git-lfs smudge -- %f
                        filter.lfs.process=git-lfs filter-process
                        filter.lfs.required=true
                        http.sslbackend=openssl
                        http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
                        core.autocrlf=true
                        core.fscache=true
                        core.symlinks=false
                        credential.helper=manager

          (2) git config  --global  -l   //如果是第 次装git 这里会报一个错

          (3) git config user.name 

        设置用户名和密码
          $ git config --global user.name "cat"   //后面的双引号可以不加
          $ git config --global user.email "732422364@qq.com"

          上面的用户名和密码,只是起一个标识作用,将来提交代码的时候知道是谁提交的,email 符不符合规范都不要紧

          实际上,对于全局配置, 会在 C:\Users\Administrator\ 下建一个 .gitconfig 的文件,内容                          
                    [user]
                        name = cat
                        email = 732422364@qq.com


         创建仓库 ,完成版本控制
             (1) 创建本地git仓库 
                >git init 
                    初始一个空的git仓库, 会生成一个隐藏的文件夹 .git (千成不要删除)

                git 中的工作区,暂存区,历史区(版本库),远程仓库 的概念

               ==工作区:  就是你现在能看到的工作的目录
               ==暂存区:  stage (阶段) 或 index , 一般放在 .git/index 文件
               ==历史区:  repository 仓库,或本地仓库
               ==远程仓库: remote (git hub 或 gitee等)

               工作区 add==> 暂存区  commit==> 版本库  push==> 远程仓库 

         (2) 在工作区编写文件,提到 暂存区
             >git add  xxx //把 xxx这个文件提到暂存区
             >git add *.java  //把所有的.java文件提到暂存区
             >git add . 或 git add -A  //提交所有的文件到暂存区

         >git status 可以查看状态
                        On branch master  //现在用的分支是 master            
                        No commits yet  //没有提交的

                        Changes to be committed:
                          (use "git rm --cached <file>..." to unstage)
                               //绿色的 表示提了
                                new file:   a.java
                                new file:   b.java
                                new file:   lesson4.java

                        Untracked files:
                          (use "git add <file>..." to include in what will be committed)
                               //红色 表示没提
                                c.txt
                                d.txt


                    红色代表文件在工作区
                    绿色代表文件在暂存区
                    看不到的代表所有的修改信息都已提到历史区


        (3) 提交到历史区
             > git commit -m "01 这是项目初始化,第五组的ssm之路开始了..."   //-m 后面的是本次提交相关的说明

             > git log 查看历史信息

             > git log 

                 > git log --pretty=oneline //可以查看简明列
                    0dd0db2d6170842d45c642aff8c523c869c62752 (HEAD -> master) 03 添加了两个js
                    f23cf2bd8c4cc35752cf6443558f3e744adb78fe 02 添加了登录和主界面
                    4b1738f3dacef6f5e7d2fd5ef176648c294d6bbc 01 这是项目初始化,第五组的ssm之路开始了...

                 > git reflog 查看历史信息,包含回滚信息


                关于中文名文件的问题
                在 目录中新建一个 名单.txt
                >git status 发现  "\345\220\215\345\215\225.txt"

                >git config --global core.quotePath false

                再查看,中文名能显示出来了

      (4) 忽略文件
          在当前目录,建一个叫 .gitignore 的文件 内容

                        .settings  //忽略 .settings目录
                        build  //忽略build目录
                        .classpath ///忽略.classpath  这个文件
                        target //忽略target 目录
            xxx.txt  //忽略 xxx.txt
             ....

==== 3 git 的回滚,删除 ,checkout 
        1) 回滚

             ===取消已提到暂存区的内容 ===
            >git reset  //从暂存区撤回全部
            >git reset a.h  //从暂存区撤回 a.h 


         === 历史区记录回滚 ====
         > git reset --hard HEAD^ 回滚到上一次

         回退到某个版本
         > git reset --hard f23cf2bd8c4cc35752cf6443558f3e744adb78fe  //其实取前几位就可以
         > git reflog //查看历史版本提交和回退情况

    2) 删除已存在于版本库中的目录或文件 
        直接在工作区中删除
        git add 
        git commit

    3) checkout
       >git checkout *   //从版本库签出所有
       >bit checkout b.css //只签出b.css 

    ==== 4 git 和远程仓库的关联

   码云 https://gitee.com/

   1) 先在 gitee 上建远程仓库 
   2) 把远程仓库克隆到本地
        >git clone 地址
            ==> git clone https://gitee.com/fangyiguo/ssm-blog.git
           会把远程仓库,克隆到本地

        >git remote -v //移除和远程仓库的关联
                        origin  https://gitee.com/fangyiguo/ssm-blog.git (fetch)
                        origin  https://gitee.com/fangyiguo/ssm-blog.git (push)

              >git remote add origin  https://gitee.com/fangyiguo/ssm-blog.git  //添加和远程仓库的关联


   3) 在克隆下来的仓库上进行开发
        >git status 查看
        >git add  .  提到暂存区
        >git commit -m "提示信息"  提到历史区

        >git push origin master  //master 指的是仓库的master分支   (有可能要输入账号和密码,是码云的登录账号和密码)

        >git pull origin master  //从远程仓库拉取内容到本地


   冲突的问题
       两个用户修改了同一个文件, 在互相提交和拉取的时候可能产生冲突
       解决: 把冲突的文件修改正确以后,再提交