一、介绍git
- 1、Git 是一个开源的分布式版本控制系统。版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
- 2、什么叫做集中版本控制系统和分布式控制系统
- 集中化的版本控制系统:诸如CVS,Subversion等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
这么做最显而易见的缺点是中央服务器的单点故障。如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。要是中央服务器的磁盘发生故障,碰巧没做备份,或者备份不够及时,就会有丢失数据的风险。最坏的情况是彻底丢失整个项目的所有历史更改记录。
结合图示简单理解就是员工A和员工B只能从总服务器拿数据,并且A和B之间不能传递和修改数据;在这种情况下;如果总服务器崩了则员工就不能拿到新数据接着干活;员工也无法推送数据,还有备份数据丢失的危险。
- 分布式的版本控制系统:分布式版本控制系统的客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。
- 集中化的版本控制系统:诸如CVS,Subversion等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
这么做最显而易见的缺点是中央服务器的单点故障。如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。要是中央服务器的磁盘发生故障,碰巧没做备份,或者备份不够及时,就会有丢失数据的风险。最坏的情况是彻底丢失整个项目的所有历史更改记录。
GIT的工作原理
- 工作区:我们能看到的,并且用来写代码的区域
- 暂存区:临时存储用的
- 历史区:生成历史版本
- 代码文件从工作区=>暂存区=>历史区,是把内容复制一份传过去,本区域依然存在这些信息。
git常用命令
初始化配置
- 配置使用git仓库的人员姓名:
git config --global user.name 'xiaominig'
- 配置使用git仓库人员的eamil:
git config -- global user.eamil 'eamil account'
- 配置到缓存,默认15分钟:
git config --global credential.helper cache
- 修改缓存时间
git config --global credential.helper 'cache --timeout=3600'
- 列举所有的配置:
git config -l
// 这里是英文的小写L
查看、添加、提交、删除、找回、重置修改文件
-
显示command的help:
git help
-
显示某次提交的内容:
git show
-
抛弃工作区所选文件的修改:
git checkout -- fileName
-
抛弃工作区全部文件的修改:
git checkout .
-
将所选的修改过的文件上传到暂存区:
git add fileName
-
将修改过的所有文件上传到暂存区:
git add .
-
删除所选的本地文件:
git rm fileName
-
从版本库中删除文件,但是不删除本地文件:
git rm fileName --cached
-
将删除的本地文件恢复到本地
- 先把文件恢复到工作区:
git reset fileName
- 最后将历史区的文件回滚到工作区:
git checkout fileName
- 先把文件恢复到工作区:
-
将所选文件从暂存区恢复到工作区
git reset fileName
-
所有文件从暂存区恢复到工作区
git reset -- .
-
恢复最近一次提交过的状态,意思就是放弃上次提交后的所有修改。
git reset --hard
-
查看当前文件和暂存区文件的差异
git diff fileName
-
查看所有当前工作区的文件和暂存区的文件差异
git diff
-
查看记录
- 查看提交历史记录,版本号
git log
- 查看该文件每次的记录提交
git log fileName
- 查看每次详细修改内容的diff
- 查看所有的历史记录(包括历史区回滚后)
git reflog
- 查看远程仓库的链接
git remote -v
- 查看提交历史记录,版本号
初始化(修改)git的信息,一般第一次使用的时候用。
- 初始化个人本地信息 (前提是在github上注册过账号)
git config --global user.name 'fuaocong'
git config --global user.email '2367991928@qq.com'
- 查看个人信息初始化是否成功
git config --list
将代码从本地提交到中央仓库(远程)
- 把本地文件变成一个git仓库
git init
- 查看本地文件仓库的状态;若文件的颜色是红色则表示文件的修改部分还在工作区(可以不看)
git status
- 将从工作区提交到暂存区(缓存区);若文件名的颜色是绿色则表示修改部分已经提交到暂存区(缓存区)
git add .
- 把暂存区(缓存区)的代码提交到历史区,生成历史版本信息
git commit -m '备注信息'
- 将文件推送到中央仓库
- 如果是第一次需要绑定中央仓库的地址
git remote add 通道名 远程仓库地址
git push 通道名
- 如果已经提交过一次了
git pull origin master
,先把中央仓库的代码拉下来,然后git add . commit pushgit push origin master
,再把本地的代码上传到中央仓库
- 如果是第一次需要绑定中央仓库的地址
提交你的修改
- 添加当前修改的所有文件到暂存区
git add .
- 自动追踪文件
git add -u
- 把文件从暂存区提交到历史区
git commit - m '修改'
- 推送历史区更新的文件到中央仓库(远程)
git push origin master
- 查看文件状态
git status
分支
- 查看远程分支
git branch -r
- 创建新的分支
git branch brName
- 查看已经被合并到当前的分支的分支
git branch --merged
- 查看还没有合并到当前分支的分支
git branch --no-merged
- 切换到某个分支
git checkout brName
- 创建新分支并切换到新分支
git checkout -b newBrName
- 基于分支brName创建的newBrName新分支,并切换到新分支
git checkout -b newBrName brName
- 删除某个分支
git branch -d brName
- 强制删除某个分支(未被合并的分支删除的时候需要强制)
git branch -D brName
分支合并
- 将brName分支合并到当前分支
git merge brName
git远程分支管理
- 抓取远程仓库所有分支更新比你高合并到本地
git pull
- 抓取远程仓库更新
git fetch origin
- 将远程的主分支合并到本地当前分支
git merge origin/master
- 提交所有分支
git push
- 将本地主分支推到远程主分支
git push origin master
- 将本地主分支推到远程(如远程无主分支则创建,用于初始化远程仓库)
git push -u origin master
- 用本地的分支创建远程分支
git push origin localbrName
git远程仓库
- 删除远程仓库
git remote rm 仓库名
代码回滚,不能从历史区回滚到暂存区
从历史区回滚到工作区
git checkout
从暂存区回滚到工作区
get reset --hard 版本号
协作开发
- gitHub中settings里的Collaboration 设置协作开发者,码云中管理里面有开发者设置。
- 让本地仓库和远程仓库新建一个链接,origin是随便起的一个链接名(可以改成自己想要的,只不过一般都用这个名字)
git remote add origin git仓库链接
- 取消本地仓库和某个远程仓库的链接
git remote rm origin 远程仓库链接
- 查看本地仓库和哪些远程仓库链接
git remote -v
- 删除本地仓库和远程仓库的链接
git remote rm orgin(链接名,一般是origin)
将中央仓库的代码拉取到本地
- 现在本地文件夹初始化一个仓库
git init
- 克隆中央仓库的地址
git clone url
- 添加中央版本库origin,语法为git remote add 通道名 url
git remote add origin url
- 查看远程仓库
git remote -v
项目开发流程
- 组长或者项目负责人先创建中央仓库,创建好公共文件以及reset.css文件,增加写作者等等。
- 小组成员基于
git clone 链接地址 项目名(可写可不写,写了文件夹名就是它)
克隆到本地仓库。(解决了三个事情,第一是初始化一个本地仓库git init
,第二和对应的远程仓库也保持了关联git remote add origin 远程仓库链接
,第三,把远程仓库的代码拉取到了本地git pull origin master
) - 把修改的代码文件上传到暂存区
git add .
- 把暂存区的代码上传到历史区
git commit -m '备注信息'
- 把历史区的代码上传到远程仓库
git push origin master
常用的linux命令
- ls 用来查看当前目录下有哪些文件以及文件夹
- clear 清屏
- cd 文件夹名字 切换路径
- mkdir 创建文件夹
- touch 创建文件
- vi 文件名 进入对应的文件 按i键进入编辑状态
- rm 删除文件
- rm - rf 文件夹名字 强制删除文件夹
基于npm进行模块管理
- 把模块安装再当前项目中
npm install XXX
- 把模块安装再全局环境中
npm install XXX -g
- 安装指定版本号的模块
npm i XXX@1.0.0
- 查看模块都有哪些版本号信息
npm view XXX versions
- 初始化当前项目的配置依赖清单
npm init -y
- 把模块保存在生产依赖(开发和部署的时候都需要)清单中
npm i XXX --save
- 把模块保存在开发依赖(只有开发的时候需要)清单中
npm i XXX --save-dev
- 跑环境,按照清单安装所需的模块
npm i
- 查看全局安装模块的目录
npm root -g
- 卸载安装过的模块
npm uninstall XXX
或者npm uninstall XXX -g
拉取远程指定的分支到本地仓库
- 初始化本地仓库
git init
- 将本地仓库和远程仓库进行关联
git remote add origin 远程仓库链接
- 将远程分支拉到本地
git fetch origin dev
dev为远程仓库的分支名 - 在本地创建分支并切换到该分支
git checkout -b dev(本地分支名) origin/dev(远程分支名)
- 将远程代码拉取到本地
git pull origin dev