版本迭代—>新的版本–>版本管理器
版本控制( Revision control )是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术
简而言之就是用于管理多人协同开发项目的技术
没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题
多人开发就必须要使用版本控制,否则代价会比较大
版本控制分类
SVN 是集中式的版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。集中式版本控制系统最大的毛病就是必须联网才能工作,对网络带宽要求较高
Git 是分布式版本控制系统,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。Git可以直接看到更新了那些代码和文件!
和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了
Git是目前世界上最先进的分布式版本控制系统。
创始人:Linux和Git之父林纳斯托瓦兹( Linus Benedict Torvalds) 1969、芬兰赫尔辛基人
软件下载
打开git官网,下载对应操作系统的版本
官网
所有东西下载慢的话可以去找镜像!
官网下载太慢,推荐使用淘宝镜像下载:镜像下载
选择对应的电脑版本下载,无脑下一步安装即可
启动Git
安装成功后在开始菜单中会有Git项,菜单下有3个程序:任意文件夹下右键也可以看到对应的程序
Git Bash:Unix与Linux风格的命令行,使用最多
Git CMD:Windows风格的命令行
Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令
关机
重启
ls 查看当前目录下的所有目录和文件
ll 查看当前目录下的所有目录和文件,包含隐藏文件
mkdir demo 在当前目录下创建一个名为demo的目录
mkdir demo/chapter 在指定目录下创建一个名为chapter的目录
rm -r demo 递归删除当前目录下的demo目录
命令:touch 文件名
示例:在当前目录创建一个名为index.js的文件 touch index.js
命令:rm 文件名
示例:在当前目录删除一个名为index.js的文件 rm index.js
mv 要移动的对象(文件等) 目标目录
mv index.html chapter
将index.html移动到chapter 目录中
reset:重新初始化终端
clear:清屏
history:查看历史命令
help:帮助
exit:退出
#:表示注释(一般不在终端写注释)
当安装Git后首先要做的事情是设置你的用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中:
git config --global user.name "Mr zhang" # 用户名称
git config --global user.password "xxxxx.qqcom" # 邮箱
查看配置信息
git config --global user.name
git config --global user.email
有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名
打开用户目录,创建 .bashrc 文件
部分windows系统不允许用户创建点号开头的文件,可以打开GitBash,执行touch ~/.bashrc
在.bashrc
文件中输入如下内容:
# 用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
# 用于输出当前目录所有文件及基本信息
alias ll='ls -al'
解决GitBash乱码问题
3.1、打开GitBash执行下面命令
git config --global core.quotepath false
3.2、 在电脑安装的git目录中,${git_home}/etc/bash.bashrc 文件最后加入下面两行
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
要使用Git对我们的代码进行版本控制,首先需要获得本地仓库
1)在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库
2)进入这个目录中,点击右键打开Git bash窗口
3)执行命令git init
4)如果创建成功后可在文件夹下看到隐藏的.git目录
Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git 的命令而时刻发生变化!
工作区域
Git本地有四个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或
Git Directory)、git仓库(Remote Directory)。文件在这四个区域之间的转换关系如下:
工作流程
git的工作流程一般是这样的:
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件放入暂存区域;
3、将暂存区域的文件提交到git仓库。
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
本地仓库搭建
创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库
1、创建全新的仓库,需要用GIT管理的项目根目录执行;
# 在当前目录新建一个Git代码库
$ git init
2、执行后可以看到,在项目目录多出了一个隐藏的git目录,关于版本的所有信息都在这个目录里面
克隆远程仓库
1、另一种方式是克隆远程目录,将远程服务器上的代码仓库完全镜像备份一份至本地!
# 克隆一个项目和她的整个代码历史(版本信息)
$ clone [url] https://gitee.com/baomidou/MybatisX.git
2、去gitee
或者github
上克隆一个测试!
文件状态
版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上
git add
状态变为Staged
.Modified
. 如果使用git rm
移出版本库,则成为Untracked
文件git add
可进入暂存staged
状态, 使用git checkout
则丢弃修改过, 返回到unmodify
状态, 这个git checkout
即从库中取出文件, 覆盖当前修改git commit
则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify
状态. 执行git reset HEAD filename
取消暂存,文件状态为Modified
查看文件状态
上面说文件有4种状态,通过如下命令可以查看到文件的状态:
# 查看指定文件状态
git status [filename]
# 查看所有文件状态
git status
# 添加指定文件到暂存区
git add '文件名'
# 添加所有文件到暂存区
git add .
# 提交暂存区的内容到本地仓库 -m 提交信息
git commit -m "提示消息"
# 查看提交日志
git log
# 回退版本
git reset --hard [提交标识]
# 查看已经删除的提交记录
git reflog
注:提交标识]可以用 git-log 或 git log 指令查看
忽略文件
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立".gitignore
"文件,此文件有如下规则:
#为注释
*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
由于
github是国外的,有一道墙,访问会比较慢,在国内,推荐使用gitee
1、注册登录码云,完善个人信息
2、设置本机绑定SSH公钥,实现免密登录
# 进入 C:\users\86186\.ssh 目录
# 生成公钥
ssh-keygen -t rsa
# 查看生成公钥
cat ~/.ssh/id_rsa.pub
# 验证是否配置成功
ssh -T [email protected]
3、将公钥信息public key添加到码云账户中即可
4、使用码云创建自己的仓库
新建仓库填写相关信息即可
先初始化本地库,然后与已创建的远程库进行对接
# 链接远程仓库,创建主分支
git remote add origin 远程仓库地址
远程名称:默认是origin,取决于远端服务器设置
仓库路径:从远端服务器获取此URL
git remote
# 推送到远端的同时并且建立起和远端分支的关联关系
git push [-f] [--set-upstream] [远端名称 [本地分支名][:远端分支名] ]
# 把本地仓库的变化连接到远程仓库主分支
# git push [remote -name] [branch-name]
git push origin master
注:
-f
表示强制覆盖--set-upstream
推送到远端的同时并且建立起和远端分支的关联关系。
# 删除关联的origin的远程仓库
git remote rm 远程仓库名称
如果已经有一个远端仓库,我们可以直接clone到本地
# 从远程仓库克隆
# 本地目录可以省略,会自动生成一个目录
git clone <远程仓库路径> [本地目录]
远程分支和本地的分支一样,我们可以进行merge操作,只是需要先把远端仓库里的更新都下载到本
地,再进行操作
抓取 命令:git fetch [remote name] [branch name]
抓取指令就是将仓库里的更新都抓取到本地,不会进行合并
拉取 命令:git pull [remote name] [branch name]
# 显示所有本地分支
git branch
# git-log也可显示分支信息
git-log
# 新建一个分支
git branch dev01
# 切换到指定分支
$ git checkout dev01
# 新建一个分支,并切换到该分支
$ git checkout -b dev02
# 删除一个分支
git branch -d dev01 # 删除分支时,需要做各种检查
git branch -D dev01 # 不做任何检查,强制删除
# 合并指定分支到当前分支 需先切换到master主分支上
git merge dev02