- 一、GIT 和 GIT-HUB
- 二、GIT版本控制系统
- 三、git命令大全
- 配置使用 git 仓库的人员姓名
- 配置使用 git 仓库的人员 email
- 配置到缓存 默认15分钟
- 修改缓存时间
- 用户的 git 配置文件~/.gitconfig
- 初始化一个版本仓库
- Clone 远程版本库
- 添加远程版本库 origin,语法为 git remote add [shortname] [url]
- 查看远程仓库
- 添加当前修改的文件到暂存区
- 如果你自动追踪文件,包括你已经手动删除的,状态为 Deleted 的文件
- 提交你的修改
- 推送你的更新到远程服务器,语法为 git push [远程名] [本地分支]:[远程分支]
- 查看文件状态
- 跟踪新文件
- 从当前跟踪列表移除文件,并完全删除
- 仅在暂存区删除,保留文件在当前目录,不再跟踪
- 重命名文件
- 查看提交的历史记录
- 修改最后一次提交注释的,利用–amend参数
- 忘记提交某些修改,下面的三条命令只会得到一个提交。
- 假设你已经使用git add .,将修改过的文件a、b加到暂存区
- 现在你只想提交a文件,不想提交b文件,应该这样
- 取消对文件的修改
- 创建一个分支
- 切换工作目录到 dev
- 将上面的命令合在一起,创建 dev 分支并切换到 dev
- 合并 dev 分支,当前工作目录为 master
- 合并完成后,没有出现冲突,删除 dev 分支
- 拉去远程仓库的数据,语法为 git fetch [remote-name]
- fetch 会拉去最新的远程仓库数据,但不会自动到当前目录下,要自动合并
- 查看远程仓库的信息
- 建立本地的 dev 分支追踪远程仓库的 develop 分支
- 四、window操作系统:
- 五、一个新项目的开始:
一、GIT 和 GIT-HUB
GIT-HUB:https://www.github.com 一个网站(一个开源的源代码管理平台),用户注册后,可以在自己账户下创建仓库,用来管理项目的源代码(源代码是基于 git 传到仓库中) 我们所熟知的插件、类库、框架等都在这个平台上有托管,我们可以下载观看和研究源码等
二、GIT版本控制系统
版本控制系统:
- 记录历史版本信息(记录每一次修改的记录)
- 方便团队相互之间协作开发
……. 常用的版本控制系统
- cvs / svn:集中式版本控制系统
- git :分布式版本控制系统
1. GIT工作原理
- 工作区:我们能看到的,并且用来写代码的区域
- 暂存区:临时存储用的
- 历史区:生成历史版本
- 工作区 -> 暂存区 -> 历史区
1.GIT 的全局配置
第一次安装完成 git 后,我们在全局环境下配置基本信息:我是谁?
$ git config -l 查看配置信息
$ git config --global -l 查看全局配置信息
配置全局信息:用户名和邮箱
$ git config --global user.name 'xxx'
$ git config --global user.email 'xxx@xx.xx'
2.创建仓库完成版本控制
创建本地 git 仓库
$ git init
// 会生成一个隐藏文件夹 “.git”(这个文件夹千万不要删,因为暂存区和历史区还有一些其它的信息都在这里,删了就不是一个完整的 git 仓库)
在本地编写完成代码后(在工作区),把一些文件提交到暂存区
$ git add xxx 把某一个文件或者文件夹提交到暂存区
$ git add . 把当前仓库中所有最新修改的文件都提交到暂存区
$ git add -A
$ git status 查看当前文件的状态(红色代表在工作区,绿色代表在暂存区,看不见东西证明所有修改的信息都已
经提交到历史区)
把暂存区内容提交到历史区
$ git commit -m'描述信息:本次提交内容的一个描述'
查看历史版本信息(历史记录)
$ git log
$ git reflog 包含回滚的信息
2. GIT-HUB
- Settings 用户设置
- Profile 修改自己的基本信息
- Account 可以修改用户名
- Security 可以修改自己的密码
- Emails 邮箱(必须进行邮箱校验)
- ……
- 创建仓库
new repository -> 填写信息 -> Create repository- public 公共仓库作为开源的项目
- private 私有仓库作为内部团队协作管理的项目
Settings -> 删除仓库 Delete this repository
Collaborators 设置协作开发的人员
Code 可以查看历史版本信息和分支信息
- 把本地仓库信息提交到远程仓库
// 建立本地仓库和远程仓库的链接
查看本地仓库和哪些远程仓库保持链接
$ git remote -v
让本地仓库和远程仓库新建一个链接 origin 是随便起的一个链接名(可以改成自己想要的,只不过一般都用这个名
字)
$ git remote add origin [GIT远程仓库地址]
删除关联信息
$ git remote rm origin
提交之前最好先拉取
$ git pull origin master
把本地代码提交到远程仓库(需要输入 github 的用户名密码)
$ git push origin master
$ git clone [远程仓库git地址] [别名:可以不设置,默认是仓库名]
/*
* 真实项目开发流程:
* 1.组长或者负责人先创建中央仓库(增加协作者)
* 2.小组成员基于 $ git clone 把远程仓库及默认的内容克隆到本地一分(解决了三个事情:初始化一个本地
仓库“git init”、和对应的远程仓库也保持了关联“git remote add”、把远程仓库默认内容拉取到本地“git pull”)
* 3.每个组员写完自己的程序后,基于“git add/git commit”把自己修改的内容存放到历史区,然后通过
“git pull / git push”把本地信息和远程仓库信息保持同步即可(可能涉及冲突的处理)
*/
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 平台上下载安装
$ npm install xxx 把模块安装在当前项目中(node_modules)
$ npm install xxx -g 把模块安装在全局环境中
$ npm i xxx@1.0.0 安装指定版本号的模块
$ npm view xxx versions > xxx.version.json 查看某个模块的版本信息(输出到指定 JSON 文件中)
/*
* 什么情况下会把模块安装在全局?
* ->可以使用“命令”对任何的项目进行操作
* ->$ npm root -g 查看全局安装的目录
* ->因为在安装目录下生成了 xxx.cmd 的文件,所以我们能够使用 xxx 的命令进行操作
*
* 安装在本地项目中的模块
* ->可以在项目中导入进来使用
* ->但是默认不能基于命令来操作(因为没有 .cmd 文件)
* ->但是可以基于 package.json 中的 scripts,配置一些 npm 可以执行命令,配置后通过
$ npm run xxx 执行
*/
$ npm init -y 初始化当前项目的配置依赖清单(项目文件加的名字中不能出现中文、大写字母和特殊符号)
=>创建成功后在当前项目中生成 package.json 的清单文件
dependencies :生产依赖模块(开发和项目部署的时候都需要)
devDependencies :开发依赖模块(只有开发的时候需要)
scripts : 配置本地可执行命令的
$ npm i xxx --save 把模块保存在清单生产依赖中
$ npm i xxx --save-dev 把模块保存在清单开发依赖中
$ npm install 跑环境,按照清单安装所需的模块
$ npm uninstall xxx
$ npm uninstall xxx -g 卸载安装过的模块
三、git命令大全
1. 初始化配置
配置使用 git 仓库的人员姓名
- git config —global user.name “Your Name Comes Here”
配置使用 git 仓库的人员 email
- git config —global user.email you@yourdomain.example.com
配置到缓存 默认15分钟
- git config —global credential.helper cache
修改缓存时间
- git config —global credential.helper ‘cache —timeout=3600’
- git config —global color.ui true
- git config —global alias.co checkout
- git config —global alias.ci commit
- git config —global alias.st status
- git config —global alias.br branch
- git config —global core.editor “mate -w” # 设置 Editor 使用 textmate
- git config -1 #列举所有配置
用户的 git 配置文件~/.gitconfig
2. 查看、添加、提交、删除、找回,重置修改文件
- git help # 显示 command 的 help
- git show # 显示某次提交的内容
- git show $id
- git co — # 抛弃工作区修改
- git co . # 抛弃工作区修改
- git add # 将工作文件修改提交到本地暂存区
- git add . # 将所有修改过的工作文件提交暂存区
- git rm # 从版本库中删除文件
- git rm —cached # 从版本库中删除文件,但不删除文件
- git reset # 从暂存区恢复到工作文件
- git reset — . # 从暂存区恢复到工作文件
- git reset —hard # 恢复最近一次提交过的状态,即放弃上次提交后的所有本次修改
- git ci
- git ci .
- git ci -a # 将 git add, git rm 和 git ci 等操作都合并在一起做
- git ci -am “some comments”
- git ci —amend # 修改最后一次提交记录
- git revert <$id> # 恢复某次提交的状态,恢复动作本身也创建了一次提交对象
- git revert HEAD # 恢复最后一次提交的状态
3. 查看文件 diff
- git diff # 比较当前文件和暂存区文件差异
- git diff
- git diff <$id1> <$id2> # 比较两次提交之间的差异
- git diff .. # 在两个分支之间比较
- git diff —staged # 比较暂存区和版本库差异
- git diff —cached # 比较暂存区和版本库差异
- git diff —stat # 仅仅比较统计信息
4. 查看提交记录
- git log
- git log # 查看该文件每次提交记录
- git log -p # 查看每次详细修改内容的 diff
- git log -p -2 # 查看最近两次详细修改内容的 diff
- git log —stat #查看提交统计信息
tig Mac 上可以使用 tig 代替 diff 和 log,brew install tig
5. 取得Git仓库
初始化一个版本仓库
- git init
Clone 远程版本库
- git clone git@xbc.me:wordpress.git
添加远程版本库 origin,语法为 git remote add [shortname] [url]
- git remote add origin git@xbc.me:wordpress.git
查看远程仓库
- git remote -v
6. 提交你的修改
添加当前修改的文件到暂存区
- git add .
如果你自动追踪文件,包括你已经手动删除的,状态为 Deleted 的文件
- git add -u
提交你的修改
- git commit –m “你的注释”
推送你的更新到远程服务器,语法为 git push [远程名] [本地分支]:[远程分支]
- git push origin master
查看文件状态
- git status
跟踪新文件
- git add readme.txt
从当前跟踪列表移除文件,并完全删除
- git rm readme.txt
仅在暂存区删除,保留文件在当前目录,不再跟踪
- git rm –cached readme.txt
重命名文件
- git mv reademe.txt readme
查看提交的历史记录
- git log
修改最后一次提交注释的,利用–amend参数
- git commit —amend
忘记提交某些修改,下面的三条命令只会得到一个提交。
- git commit –m “add readme.txt”
- git add readme_forgotten
- git commit –amend
假设你已经使用git add .,将修改过的文件a、b加到暂存区
现在你只想提交a文件,不想提交b文件,应该这样
- git reset HEAD b
取消对文件的修改
- git checkout –- readme.txt
7. 查看、切换、创建和删除分支
- git br -r # 查看远程分支
- git br
# 创建新的分支 - git br -v # 查看各个分支最后提交信息
- git br —merged # 查看已经被合并到当前分支的分支
- git br —no-merged # 查看尚未被合并到当前分支的分支
- git co # 切换到某个分支
- git co -b
# 创建新的分支,并且切换过去 - git co -b
# 基于 branch 创建新的 new_branch - git co $id # 把某次历史提交记录 checkout 出来,但无分支信息,切换到其他分支会自动删除
- git co $id -b
# 把某次历史提交记录 checkout 出来,创建成一个分支 - git br -d # 删除某个分支
- git br -D # 强制删除某个分支 (未被合并的分支被删除的时候需要强制)
8. 分支合并和 rebase
- git merge # 将 branch 分支合并到当前分支
- git merge origin/master —no-ff # 不要 Fast-Foward 合并,这样可以生成 merge 提交
- git rebase master # 将 master rebase 到 branch,相当于:
- git co && git rebase master && git co master && git merge
9. Git 补丁管理(方便在多台机器上开发同步时用)
- git diff > ../sync.patch # 生成补丁
- git apply ../sync.patch # 打补丁
- git apply —check ../sync.patch #测试补丁能否成功
10. Git 暂存管理
- git stash # 暂存
- git stash list # 列所有 stash
- git stash apply # 恢复暂存的内容
- git stash drop # 删除暂存区
11. Git 远程分支管理
- git pull # 抓取远程仓库所有分支更新并合并到本地
- git pull —no-ff # 抓取远程仓库所有分支更新并合并到本地,不要快进合并
- git fetch origin # 抓取远程仓库更新
- git merge origin/master # 将远程主分支合并到本地当前分支
- git co —track origin/branch # 跟踪某个远程分支创建相应的本地分支
- git co -b
origin/ # 基于远程分支创建本地分支,功能同上 - git push # push所有分支
- git push origin master # 将本地主分支推到远程主分支
- git push -u origin master # 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)
- git push origin
# 创建远程分支, origin 是远程仓库名 - git push origin
: # 创建远程分支 - git push origin :
#先删除本地分支(git br -d ),然后再 push 删除远程分支
12. 基本的分支管理
创建一个分支
- git branch dev
切换工作目录到 dev
- git chekcout dev
将上面的命令合在一起,创建 dev 分支并切换到 dev
- git chekcout –b dev
合并 dev 分支,当前工作目录为 master
- git merge dev
合并完成后,没有出现冲突,删除 dev 分支
- git branch –d dev
拉去远程仓库的数据,语法为 git fetch [remote-name]
- git fetch
fetch 会拉去最新的远程仓库数据,但不会自动到当前目录下,要自动合并
- git pull
查看远程仓库的信息
- git remote show origin
建立本地的 dev 分支追踪远程仓库的 develop 分支
- git checkout –b dev origin/develop
13. Git远程仓库管理
- git remote -v # 查看远程服务器地址和仓库名称
- git remote show origin # 查看远程服务器仓库状态
- git remote add origin git@ github:robbin/robbin_site.git # 添加远程仓库地址
- git remote set-url origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址(用于修改远程仓库地址)
- git remote rm # 删除远程仓库
14. 创建远程仓库
- git clone —bare robbin_site robbin_site.git # 用带版本的项目创建纯版本仓库
- scp -r my_project.git git@ git.csdn.net:~ # 将纯仓库上传到服务器上
- mkdir robbin_site.git && cd robbin_site.git && git —bare init # 在服务器创建纯仓库
- git remote add origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址
- git push -u origin master # 客户端首次提交
- git push -u origin develop # 首次将本地 develop 分支提交到远程 develop 分支,并且 track
- git remote set-head origin master # 设置远程仓库的 HEAD 指向 master 分支
也可以命令设置跟踪远程库和本地库 :git branch —set-upstream master origin/master
四、window操作系统:
在某个文件夹下执行DOS命令
- windows + r -> 运行窗口中输入 cmd
- 磁盘符: 进入到指定磁盘
- cd xxx 进入到指定的目录
- cd 直接拖进想要进入的目录文件件 直接进入
- (MAC的终端就是这样操作的)
- 在文件夹地址栏直接输入cmd即可
- 在文件夹中 “shift + 鼠标右键” -> 在此处打开命令窗口
- 如果想查看当前目录中的文件内容
- MAC: ls / ls -A
- WIN:dir
五、一个新项目的开始:
- 创建项目文件夹
- 把他作为一个新的仓库进行代码管理(可以基于 $git clone 把远程仓库克隆下来即可)
- 初始化模块配置清单 package.json:$npm init -y
- 安装所需要的模块:$npm i jquery bootstrap@3 less ….
- 正常开发
开发中:可能需要在本地配置命令去完成一些功能(例如 LESS 文件编译,此时需要配置 npm 可执行的命令)
"scripts": {
"zxt": "lessc css/index.less css/index.min.css -x",
"xxx": "webpack"
},
需要编译的时候,执行 $ npm run zxt
….开发中我们需要基于 git 把文件进行管理:生成对应的历史版本
提交到暂存区、历史区、远程仓库的时候,项目中很多文件是无需处理和提交的,例如:node_modules、.idea…,不需要提交的,我们生成一个 .gitignore 忽略文件# dependencies
node_modules
....
由于每次 git 提交的时候,我们都不去提交 node_modules,所以团队协作开发中,我们每当拉下来程序后,都需要“跑环境”:执行 $ npm install ,按照项目中的 package.json 中的依赖项信息,把缺失的模块都安装一遍