git的使用(收集整理)

Git

Git 是一款代码管理工具(版本控制工具)

分布式版本管理工具

  • git属于分布式(没有网也可以备份到本地git,有网就提交到github网站的服务器上)
  • svn属于集中式(有一个统一的服务器,不能本地备份)

Git初始化一个仓库

  • 其实是创建一个.git文件夹(.git文件夹就相当于备份的文件夹)
  • 命令:git init
    • 想在哪个目录创建.git文件夹,就是哪个文件夹右键 Git Bash Here ,弹出命令框,然后写命令
    • 一般是在项目的根目录执行这个命令

自报家门

  • 配置用户名:git config user.name "testName" 双引号是自己的用户名
  • 配置邮箱:git config user.email "test@sina.com" 双引号是自己的邮箱
  • 配置用户名:git config --global user.name "testName" 双引号是自己的用户名
  • 配置邮箱:git config --global user.email "test@sina.com" 双引号是自己的邮箱
  • 查看配置信息:git config --list
  • 查看文件:ls
  • 查看包括隐藏的文件: ls -a

    把代码提交到仓库中

  • 1.先把到吗添加到暂存区()
    • 命令:git add 文件路径
    • 示例:git add test.txt
    • 可以使用git add .这个命令,批量把当前目录下所有修改过的文件添加到暂存区
  • 2.把暂存区的文件提交仓库里

    • 命令:git commit -m "注释"
    • 示例:git commit -m "我提交了test.txt"
    • -m 表示指定一个字符串,作为提交的说明
  • 合并add 与commit 命令

    • git commit -a -m "合并与提交的命令"
    • 这里-a参数表明把所有修改过的文件一起添加到暂存区(只对修改后的文件有效)

      查看工作区的状态

  • 命令:git status
  • 输入此命名 执行 提示红色文字 “modified 文件名” 表示有代码改动,没有添加到暂存区
  • 输入此命令 执行 提示绿色文字 “modified 文件名” 表示有代码暂存区有未提交的文件
  • 输入此命名 执行 提示红色文字 “new file 文件名” 表示有代码改动,没有添加到暂存区
  • 输入此命令 执行 提示绿色文字 “new file 文件名” 表示有代码暂存区有未提交的文件
  • ……

    git 命令执行后 提示的内容

  • nothing to commit,working tree clean 表示没有需要提交的文件,工作区干净

添加忽略文件

  • 在项目中有一些文件是不需要提交的,我们需要把它们忽略掉
  • 需要在.git文件夹所在目录创建一个名为.gitignore的文件
    • 然后在这个文件中写上需要被忽略的文件的路径。
    • 示例:
      • :/css/a.css
      • : /css/*.css
      • : /a.html

        对比文件差异

  • 命令:git diff
    • 用来比较暂存区文件内容与工作区文件内容的区别
    • 如果暂存区没有文件,就会将工作区代码与最近一次提交的文件对比
  • 命令:git diff --cached
    • 用来比较暂存区文件与仓库文件内容的区别
  • 对比某两次提交文件的差异
    • 命令:git diff [版本号1] [版本号2] [相比较的文件路径]

      查看日志

  • 命令:git log
    • 可以查看每一次提交的日志
  • 命令:git log --oneline
    • 表示使用简洁的形式查看提交日志
  • 按键 Q 键就可退出日志

    版本回退

  • 命令:git reset --hard Head~0
    • 这是将代码回退到上一次提交时的状态 ~0 可以省略
  • 命令:git reset --hard Head~1
    • 这是将代码回退到上上一次提交时的状态
  • 命令:git reset --hard Head~2
    • 这是将代码回退到上上上一次提交时的状态
  • 命令:git reset --hard 版本号
    • 这是将代码回退到这个版本的状态(版本号是每次提交生成的,取版本号的前面六七位也可以)
  • 通过git reflog命令可以查看之前所有版本切换操作记录
    • 当版本回退多了可以在用这个命令查看某个某个版本对应的版本号,可以通过版本号来回退

      创建分支

  • 命令git branch [分支名]
    • 创建一个新分支
  • 命令:git branch
    • 查看当前所有分支

      切换分支

    • 命令:git checkout [分支名]
    • 切换分支后可以在切换后的分支中进行正常的操作

      合并分支

    • 命令:git merge [分支名] // 命令里的分支指指定的分支
    • git会将指定的分支合并到当前分支
    • 假如有两个分支:master(主分支) dev(master的子分支),先切换到dev分支创建一个文件test2.txt,内容为 111,添加并提交到仓库,
      再切换到master分支,也添加一个test2.txt的文件,内容为 222 ,添加并提交到仓库,然后再合并分支(命令:git merge dev)就会提示冲突,解决办法:手动修改master分之下的test2.txt文件吧(test2.txt的内容为两个合并的文件内容,保留自己需要的内容,删除其余的),最后再master分支上添加并提交的仓库。注:删除并没有删除dev下面的test2.txt文件(内容还是原来的 222)

      删除分支

    • 命令:git branch -d [分支名]
    • 删除指定分支,-d 参数表示要执行删除操作

      git提交中的冲突

    • 如果git不能自动合并分支,就会有冲突,我们需要手动解决冲突,然后再次提交

github

github与git

  • git 版本管理工具
  • github 就是一个网站,只是这个网站提供git服务器的功能

上传代码到git服务器(push)

  • 命令:git push [远程服务器地址] [远程服务器的分支]

    • 示例:git push https://github.com/huoqishi/test002.git master
  • 上传时可以使用一些简化的命令

    • 将远程服务器地址写成变量的形式
      • git remote add [变量名] [远程服务器地址]
      • 示例:git remote add origin https://github.com/huoqishi/test002.git
      • 这样之后就可以直接使用origin来代替git push 后面写的地址了
        git push origin master(就相当于用origin代替了后面的链接)
  • 还可以尽一步简化
    • 在push时加上-u参数,就会默认建立本地当前分支与远程指定分支的关联,只需要第一次输入命令git -u origin master下一次push时就不需要输入分支名了git push origin(以上以origin举例)

      git使用ssh方式上传代码与github

  • git生成公钥和私钥
    • 命令:ssh-keygen -t rsa 其中 -t 代表创建, rsa 代表秘钥
    • 生成的公钥与私钥文件会在当用户目录的.ssh目录下.
    • .ssh目录 下的 id_rsa 是私钥
    • .ssh目录 下的 id_rsa.pub 是公钥

下载代码

  • git clone [ssh地址/https地址] 下载下来的是没有压缩
  • Download ZIP
  • 命令:git pull [远程服务器地址] [远程的分支] (一般用这种方式拉取仓库的内容)
  • 注:push 代表上传,pull代表拉取/下载

把代码push到服务器时需要先pull一下 (先pull的作用就是看代码有没有冲突)

  • 在pull之后如果远程的代码与本地的代码有冲突,git会先自动合并冲突,如果不能自动合并,就必需我们手动去处理冲突。

从服务器上pull代码到本地

  • 如果本地没有.git目录,需要先初始化一下。
  • 命令:git pull [远程服务器地址] [远程的分支]

gh-pages分支-搭建博客.

  • 需要把自已博客的网页代码上传到github上的gh-pages分支(gh-pages为我们自己创建的分支)
  • 然后就直接访问了
    • 访问的url形式: [github用户名].github.io/[仓库的名字]/[具体的页面]

git常用命令速查表

sourceTree , tortoiseGit

检测node

  • 打开系统命令行 输入 node 回车 就打开了相当于浏览器控制台,在 > 后面可以运算
  • 退出“控制台” 快捷键:ctrl+c // 终止

npm

  • 官网[https://www.npmjs.com] (从官网可以查看安装文件的名称,比如 jquery)
  • node package manager
  • 命令:
    • 初始化:npm init (初始化的第一个名不能是中文的)
    • 安装指定包:npm install jquery --save (加上这个 –save 的作用就是在package.json中dependencies属性添加这个文件名 )
    • 删除指定包:npm remove jquery --save
    • 下载安装package.json中dependencies属性对的文件:npm install --production
    • 安装指定版本 npm install jquery@3.0.0. --save(3.0.0 是版本号,如果之前有jquery,就会将之前的覆盖)

browser-sync

  • 更改代码之后自动刷新浏览器
  • 检测browser-sync版本:browser-sync --version
  • 需要使用npm进行全局安装:npm install browser-sync -g,-g表示安装到全局(会安装到 C:\Users\Lenovo\AppData\Roaming\npm\node_modules\browser-sync)
  • 使用:browser-sync start --server --files "./index.html,app.css,./css/*.css,*.*"
  • –files参数指定要监视的文件,后面跟要监视的文件的文件路径以逗号分隔。

gulp

官网
中文网

  • 前端自动化构建工具
    js压缩,var x,xname,混淆(JS标识符混淆:是将变量等用简单的字符代替,全局的变量不会压缩成见得字符)
    合并.
    css压缩
    html压压缩

  • grunt ,webpack…

核心就5个方法

  • task,gulp中是一个个任务的形式来实现功能。
    • task(‘任务名’,function(){
      …..
      });
  • src
    • src(‘./*.js’) // 匹配到指定文件 如果使用多个规则,需要以数组的形式
  • dest(‘./minjs/‘)// 指定处理后的文件的输出路径.
  • watch(‘./*.js’,[‘任务名1’,’任务名2’]);
  • run(‘任务名’);//执行指定的任务.
    // require 英文是 请求, 用来引入插件
    // task 创建一个任务
    // src 请求一个地址的文件
    // dest 处理完成以后输出的目录
    // watch 监听一个文件, 在它改动的时候再次运行任务
    // run 运行一个task任务
    // pipe 管道方法

gulp的安装

  • 使用npm 进行安装
  • npm install gulp-cli -g;(g是global的简写)

gulp 使用

使用时还需要在项目中通过npm非全局安装gulp

  • npm install gulp --save-dev(-dev的作用就是在package.json中dev……属性添加这个文件名)

还需要在当前项目根目录添加一个gulpfile.js文件来写具体的任务代码.

gulp的一些插件

  • 也是使用npm安装
  • 对js代码进行压缩 gulp-uglify (安装命令:npm install gulp-uglify --save-dev
  • 对代码进行合并 gulp-concat (此插件是将两个或以上的文件压缩为一个文件,不仅可以合并js,也可以合并css)
  • 对css进行压缩 gulp-cssnano
  • 对html进行压缩 gulp-htmlmin

gulp 插件的使用 示例1

gulp 插件的使用 示例2

执行gulpfile.js配置的任务

  • 压缩js代码:在文件位置的的命令行输入gulp [压缩js任务名称]
  • ……