一、GIT 和 GIT-HUB

GIT-HUB:https://www.github.com 一个网站(一个开源的源代码管理平台),用户注册后,可以在自己账户下创建仓库,用来管理项目的源代码(源代码是基于 git 传到仓库中) 我们所熟知的插件、类库、框架等都在这个平台上有托管,我们可以下载观看和研究源码等

二、GIT版本控制系统

版本控制系统:

  1. 记录历史版本信息(记录每一次修改的记录)
  2. 方便团队相互之间协作开发

……. 常用的版本控制系统

  • cvs / svn:集中式版本控制系统
  • git :分布式版本控制系统

1. GIT工作原理

  • 工作区:我们能看到的,并且用来写代码的区域
  • 暂存区:临时存储用的
  • 历史区:生成历史版本
  • 工作区 -> 暂存区 -> 历史区

GIT工作原理.png

1.GIT 的全局配置

第一次安装完成 git 后,我们在全局环境下配置基本信息:我是谁?

  1. $ git config -l 查看配置信息
  2. $ git config --global -l 查看全局配置信息
  3. 配置全局信息:用户名和邮箱
  4. $ git config --global user.name 'xxx'
  5. $ git config --global user.email 'xxx@xx.xx'

2.创建仓库完成版本控制

创建本地 git 仓库

  1. $ git init
  2. // 会生成一个隐藏文件夹 “.git”(这个文件夹千万不要删,因为暂存区和历史区还有一些其它的信息都在这里,删了就不是一个完整的 git 仓库)

在本地编写完成代码后(在工作区),把一些文件提交到暂存区

  1. $ git add xxx 把某一个文件或者文件夹提交到暂存区
  2. $ git add . 把当前仓库中所有最新修改的文件都提交到暂存区
  3. $ git add -A
  4. $ git status 查看当前文件的状态(红色代表在工作区,绿色代表在暂存区,看不见东西证明所有修改的信息都已
  5. 经提交到历史区)

把暂存区内容提交到历史区

  1. $ git commit -m'描述信息:本次提交内容的一个描述'
  2. 查看历史版本信息(历史记录)
  3. $ git log
  4. $ git reflog 包含回滚的信息

集中式VS分布式.png

2. GIT-HUB

  1. Settings 用户设置
    • Profile 修改自己的基本信息
    • Account 可以修改用户名
    • Security 可以修改自己的密码
    • Emails 邮箱(必须进行邮箱校验)
    • ……
  2. 创建仓库
    new repository -> 填写信息 -> Create repository
    • public 公共仓库作为开源的项目
    • private 私有仓库作为内部团队协作管理的项目
      Settings -> 删除仓库 Delete this repository
      Collaborators 设置协作开发的人员
      Code 可以查看历史版本信息和分支信息
  3. 把本地仓库信息提交到远程仓库
    1. // 建立本地仓库和远程仓库的链接
    2. 查看本地仓库和哪些远程仓库保持链接
    3. $ git remote -v
    4. 让本地仓库和远程仓库新建一个链接 origin 是随便起的一个链接名(可以改成自己想要的,只不过一般都用这个名
    5. 字)
    6. $ git remote add origin [GIT远程仓库地址]
    7. 删除关联信息
    8. $ git remote rm origin
    1. 提交之前最好先拉取
    2. $ git pull origin master
    3. 把本地代码提交到远程仓库(需要输入 github 的用户名密码)
    4. $ git push origin master
    1. $ git clone [远程仓库git地址] [别名:可以不设置,默认是仓库名]
    2. /*
    3. * 真实项目开发流程:
    4. * 1.组长或者负责人先创建中央仓库(增加协作者)
    5. * 2.小组成员基于 $ git clone 把远程仓库及默认的内容克隆到本地一分(解决了三个事情:初始化一个本地
    6. 仓库“git init”、和对应的远程仓库也保持了关联“git remote add”、把远程仓库默认内容拉取到本地“git pull”)
    7. * 3.每个组员写完自己的程序后,基于“git add/git commit”把自己修改的内容存放到历史区,然后通过
    8. “git pull / git push”把本地信息和远程仓库信息保持同步即可(可能涉及冲突的处理)
    9. */

3. NPM

node package manger :NODE 模块管理工具,根据 NPM 我们可快速安装、卸载所需要的资源文件(例如:jQuery、vue、vue-router…) 去NODE官网:https://nodejs.org/zh-cn/ 下载 NODE(长期支持版),安装 NODE 后,NPM 也就跟着安装了 $ node -v $ npm -v 出现版本号证明安装成功

4. 基于npm进行模块管理

https://www.npmjs.com/ 基于 npm 是从 npmjs.com 平台上下载安装

  1. $ npm install xxx 把模块安装在当前项目中(node_modules
  2. $ npm install xxx -g 把模块安装在全局环境中
  3. $ npm i xxx@1.0.0 安装指定版本号的模块
  4. $ npm view xxx versions > xxx.version.json 查看某个模块的版本信息(输出到指定 JSON 文件中)
  5. /*
  6. * 什么情况下会把模块安装在全局?
  7. * ->可以使用“命令”对任何的项目进行操作
  8. * ->$ npm root -g 查看全局安装的目录
  9. * ->因为在安装目录下生成了 xxx.cmd 的文件,所以我们能够使用 xxx 的命令进行操作
  10. *
  11. * 安装在本地项目中的模块
  12. * ->可以在项目中导入进来使用
  13. * ->但是默认不能基于命令来操作(因为没有 .cmd 文件)
  14. * ->但是可以基于 package.json 中的 scripts,配置一些 npm 可以执行命令,配置后通过
  15. $ npm run xxx 执行
  16. */
  17. $ npm init -y 初始化当前项目的配置依赖清单(项目文件加的名字中不能出现中文、大写字母和特殊符号)
  18. =>创建成功后在当前项目中生成 package.json 的清单文件
  19. dependencies :生产依赖模块(开发和项目部署的时候都需要)
  20. devDependencies :开发依赖模块(只有开发的时候需要)
  21. scripts : 配置本地可执行命令的
  22. $ npm i xxx --save 把模块保存在清单生产依赖中
  23. $ npm i xxx --save-dev 把模块保存在清单开发依赖中
  24. $ npm install 跑环境,按照清单安装所需的模块
  25. $ npm uninstall xxx
  26. $ npm uninstall xxx -g 卸载安装过的模块

三、git命令大全

1. 初始化配置

  1. 配置使用 git 仓库的人员姓名

  2. git config —global user.name “Your Name Comes Here”
  3. 配置使用 git 仓库的人员 email

  4. git config —global user.email you@yourdomain.example.com
  5. 配置到缓存 默认15分钟

  6. git config —global credential.helper cache
  7. 修改缓存时间

  8. git config —global credential.helper ‘cache —timeout=3600’
  9. git config —global color.ui true
  10. git config —global alias.co checkout
  11. git config —global alias.ci commit
  12. git config —global alias.st status
  13. git config —global alias.br branch
  14. git config —global core.editor “mate -w” # 设置 Editor 使用 textmate
  15. git config -1 #列举所有配置
  16. 用户的 git 配置文件~/.gitconfig

2. 查看、添加、提交、删除、找回,重置修改文件


  1. git help # 显示 command 的 help
  2. git show # 显示某次提交的内容
  3. git show $id
  4. git co — # 抛弃工作区修改
  5. git co . # 抛弃工作区修改
  6. git add # 将工作文件修改提交到本地暂存区
  7. git add . # 将所有修改过的工作文件提交暂存区
  8. git rm # 从版本库中删除文件
  9. git rm —cached # 从版本库中删除文件,但不删除文件
  10. git reset # 从暂存区恢复到工作文件
  11. git reset — . # 从暂存区恢复到工作文件
  12. git reset —hard # 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改
  13. git ci
  14. git ci .
  15. git ci -a # 将 git add, git rm 和 git ci 等操作都合并在一起做
  16. git ci -am “some comments”
  17. git ci —amend # 修改最后一次提交记录
  18. git revert <$id> # 恢复某次提交的状态,恢复动作本身也创建了一次提交对象
  19. git revert HEAD # 恢复最后一次提交的状态

3. 查看文件 diff


  1. git diff # 比较当前文件和暂存区文件差异
  2. git diff
  3. git diff <$id1> <$id2> # 比较两次提交之间的差异
  4. git diff .. # 在两个分支之间比较
  5. git diff —staged # 比较暂存区和版本库差异
  6. git diff —cached # 比较暂存区和版本库差异
  7. git diff —stat # 仅仅比较统计信息

4. 查看提交记录


  1. git log
  2. git log # 查看该文件每次提交记录
  3. git log -p # 查看每次详细修改内容的 diff
  4. git log -p -2 # 查看最近两次详细修改内容的 diff
  5. git log —stat #查看提交统计信息

tig Mac 上可以使用 tig 代替 diff 和 log,brew install tig

5. 取得Git仓库


  1. 初始化一个版本仓库

  2. git init
  3. Clone 远程版本库

  4. git clone git@xbc.me:wordpress.git
  5. 添加远程版本库 origin,语法为 git remote add [shortname] [url]

  6. git remote add origin git@xbc.me:wordpress.git
  7. 查看远程仓库

  8. git remote -v

6. 提交你的修改


  1. 添加当前修改的文件到暂存区

  2. git add .
  3. 如果你自动追踪文件,包括你已经手动删除的,状态为 Deleted 的文件

  4. git add -u
  5. 提交你的修改

  6. git commit –m “你的注释”
  7. 推送你的更新到远程服务器,语法为 git push [远程名] [本地分支]:[远程分支]

  8. git push origin master
  9. 查看文件状态

  10. git status
  11. 跟踪新文件

  12. git add readme.txt
  13. 从当前跟踪列表移除文件,并完全删除

  14. git rm readme.txt
  15. 仅在暂存区删除,保留文件在当前目录,不再跟踪

  16. git rm –cached readme.txt
  17. 重命名文件

  18. git mv reademe.txt readme
  19. 查看提交的历史记录

  20. git log
  21. 修改最后一次提交注释的,利用–amend参数

  22. git commit —amend
  23. 忘记提交某些修改,下面的三条命令只会得到一个提交。

  24. git commit –m “add readme.txt”
  25. git add readme_forgotten
  26. git commit –amend
  27. 假设你已经使用git add .,将修改过的文件a、b加到暂存区

  28. 现在你只想提交a文件,不想提交b文件,应该这样

  29. git reset HEAD b
  30. 取消对文件的修改

  31. git checkout –- readme.txt

7. 查看、切换、创建和删除分支


  1. git br -r # 查看远程分支
  2. git br # 创建新的分支
  3. git br -v # 查看各个分支最后提交信息
  4. git br —merged # 查看已经被合并到当前分支的分支
  5. git br —no-merged # 查看尚未被合并到当前分支的分支
  6. git co # 切换到某个分支
  7. git co -b # 创建新的分支,并且切换过去
  8. git co -b # 基于 branch 创建新的 new_branch
  9. git co $id # 把某次历史提交记录 checkout 出来,但无分支信息,切换到其他分支会自动删除
  10. git co $id -b # 把某次历史提交记录 checkout 出来,创建成一个分支
  11. git br -d # 删除某个分支
  12. git br -D # 强制删除某个分支 (未被合并的分支被删除的时候需要强制)

8. 分支合并和 rebase


  1. git merge # 将 branch 分支合并到当前分支
  2. git merge origin/master —no-ff # 不要 Fast-Foward 合并,这样可以生成 merge 提交
  3. git rebase master # 将 master rebase 到 branch,相当于:
  4. git co && git rebase master && git co master && git merge

9. Git 补丁管理(方便在多台机器上开发同步时用)


  1. git diff > ../sync.patch # 生成补丁
  2. git apply ../sync.patch # 打补丁
  3. git apply —check ../sync.patch #测试补丁能否成功

10. Git 暂存管理


  1. git stash # 暂存
  2. git stash list # 列所有 stash
  3. git stash apply # 恢复暂存的内容
  4. git stash drop # 删除暂存区

11. Git 远程分支管理


  1. git pull # 抓取远程仓库所有分支更新并合并到本地
  2. git pull —no-ff # 抓取远程仓库所有分支更新并合并到本地,不要快进合并
  3. git fetch origin # 抓取远程仓库更新
  4. git merge origin/master # 将远程主分支合并到本地当前分支
  5. git co —track origin/branch # 跟踪某个远程分支创建相应的本地分支
  6. git co -b origin/ # 基于远程分支创建本地分支,功能同上
  7. git push # push所有分支
  8. git push origin master # 将本地主分支推到远程主分支
  9. git push -u origin master # 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)
  10. git push origin # 创建远程分支, origin 是远程仓库名
  11. git push origin : # 创建远程分支
  12. git push origin : #先删除本地分支(git br -d ),然后再 push 删除远程分支

12. 基本的分支管理


  1. 创建一个分支

  2. git branch dev
  3. 切换工作目录到 dev

  4. git chekcout dev
  5. 将上面的命令合在一起,创建 dev 分支并切换到 dev

  6. git chekcout –b dev
  7. 合并 dev 分支,当前工作目录为 master

  8. git merge dev
  9. 合并完成后,没有出现冲突,删除 dev 分支

  10. git branch –d dev
  11. 拉去远程仓库的数据,语法为 git fetch [remote-name]

  12. git fetch
  13. fetch 会拉去最新的远程仓库数据,但不会自动到当前目录下,要自动合并

  14. git pull
  15. 查看远程仓库的信息

  16. git remote show origin
  17. 建立本地的 dev 分支追踪远程仓库的 develop 分支

  18. git checkout –b dev origin/develop

13. Git远程仓库管理


  1. git remote -v # 查看远程服务器地址和仓库名称
  2. git remote show origin # 查看远程服务器仓库状态
  3. git remote add origin git@ github:robbin/robbin_site.git # 添加远程仓库地址
  4. git remote set-url origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址(用于修改远程仓库地址)
  5. git remote rm # 删除远程仓库

14. 创建远程仓库


  1. git clone —bare robbin_site robbin_site.git # 用带版本的项目创建纯版本仓库
  2. scp -r my_project.git git@ git.csdn.net:~ # 将纯仓库上传到服务器上
  3. mkdir robbin_site.git && cd robbin_site.git && git —bare init # 在服务器创建纯仓库
  4. git remote add origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址
  5. git push -u origin master # 客户端首次提交
  6. git push -u origin develop # 首次将本地 develop 分支提交到远程 develop 分支,并且 track
  7. git remote set-head origin master # 设置远程仓库的 HEAD 指向 master 分支

也可以命令设置跟踪远程库和本地库 :git branch —set-upstream master origin/master

四、window操作系统:

在某个文件夹下执行DOS命令

  1. windows + r -> 运行窗口中输入 cmd
  • 磁盘符: 进入到指定磁盘
  • cd xxx 进入到指定的目录
  • cd 直接拖进想要进入的目录文件件 直接进入
  • (MAC的终端就是这样操作的)
  1. 在文件夹地址栏直接输入cmd即可
  1. 在文件夹中 “shift + 鼠标右键” -> 在此处打开命令窗口
  • 如果想查看当前目录中的文件内容
  • MAC: ls / ls -A
  • WIN:dir

五、一个新项目的开始:

  1. 创建项目文件夹
  2. 把他作为一个新的仓库进行代码管理(可以基于 $git clone 把远程仓库克隆下来即可)
  3. 初始化模块配置清单 package.json:$npm init -y
  4. 安装所需要的模块:$npm i jquery bootstrap@3 less ….
  5. 正常开发
  6. 开发中:可能需要在本地配置命令去完成一些功能(例如 LESS 文件编译,此时需要配置 npm 可执行的命令)

    1. "scripts": {
    2. "zxt": "lessc css/index.less css/index.min.css -x",
    3. "xxx": "webpack"
    4. },
  7. 需要编译的时候,执行 $ npm run zxt
    ….

  8. 开发中我们需要基于 git 把文件进行管理:生成对应的历史版本
    提交到暂存区、历史区、远程仓库的时候,项目中很多文件是无需处理和提交的,例如:node_modules、.idea…,不需要提交的,我们生成一个 .gitignore 忽略文件

    1. # dependencies
    2. node_modules
    3. ....
  9. 由于每次 git 提交的时候,我们都不去提交 node_modules,所以团队协作开发中,我们每当拉下来程序后,都需要“跑环境”:执行 $ npm install ,按照项目中的 package.json 中的依赖项信息,把缺失的模块都安装一遍