什么是版本控制: 版本迭代
版本控制是一种在开发的过程中用于管理我们对文件,目录或工作等内容的修改历史,方便查看更改历史记录,备份以恢复以前的开发版本的软件工程技术。
简单点说就是用于管理多人协同开发项目的技术
.
常用的版本控制工具
主流的版本控制有如下这些:
Git
SVN
(Subversion)CVS
(Concurrent Versions System)VSS
(Micorosoft Visual SourceSafe)TFS
(Team Foudation Server)版本控制分类
记录文件的每一次更新,可以对版本做一个快照,或是记录补丁文件,适合个人用,如RCS.
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或者上传自己的修改。
所有的版本数据都保存到服务器上,用户的本地只有自己以前所同步的版本,如果不联网,用户就看不到历史版本。而且数据保存到单一服务器上,有很大的风险这个服务器会损坏。
所有版本信息仓库全部同步到本地的每一个用户,这样就可以在本地查看所有的历史版本,可以离线在本地提交,只需要在联网时push到相应的服务器或者用户哪里。由于每一个用户那里保存的都是所有版本的数据,只要有一个用户的设备没有问题,就可以恢复所有数据,但这增加了本地存储空间的占用。
Git与SVN的主要区别
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作时,用的都是自己的电脑,所以首先要从中央服务器得到高版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统必须联网才能工作,对网络要求比较高。
Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作时不用联网。协同方式是这样的:比如说自己的电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两个人只需要把各自的修改推送到对方,就可以互相看到对方的修改了。
Git是目前世界上最先进的分布式版本控制系统
视频教程
安装
去git官网下载安装包,无脑安装即可
,环境变量只是为了全局使用
卸载
直接反安装,然后清理环境变量
启动Git
安装成功后,开始菜单会有Git项;任意文件夹下右键也会看到对应的程序!
Git Bash: Unix与Linux分格的命令行,使用最多,推荐最多
Git CMD: Windows分格的命令行
Git GUI :图形界面的Git,不建议初学者使用
基本的Linux命令学习
,cd
:改变目录
,cd..
:回退到上一个目录,直接cd进入默认目录
,pwd
:显示当前文件所在的目录路径
,ls(II)
:都是列出当前目录中的所有文件,只不过II(两个II)列出的内容更为详细。
,touch
:新建一个文件夹,touch index.js 就会在当前目录下新建一个index.js文件
,rm
:删除一个文件夹,rm index.js
就会把index.js文件删除.
,mkdir
:新建一个目录,就是新建一个文件夹。
,rm -r
:删除一个文件夹,rm -r src
删除src文件夹
rm -rf / 切勿在linux中尝试!递归删除文件
,mv移动文件
,mv index src index.html
是我们要移动的文件,src是目标文件夹,当然,这样写
,reset
:重新初始化终端/清屏
,clear
:清屏
,history
:查看命令历史。
,help
:帮助
,exit
:退出。
,#
:表示注释。
Git配置
所有的配置文件都保存到本地
查看本地配置
git config -l
查看系统配置
git config --system --list
查看用户自己的配置
git config --global --list
设置邮箱和用户名(必须要配置)
git config --global user.name "liyu" #uwername
git config --global user.email [email protected] #email
Git相关的配置文件
D:\Git\etc\gitconfig
: Git安装目录下的 gitconfig --system系统级C:\Users\ liyu010405 \ .gitconfig
只适用于当前登陆用户的配置 – global全局工作区域
Git本地有三个工作区域:工作目录(Working Directory),暂存区(Stage/Index),资源库(Repository或Git Directory)。如果加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
Workspace: 工作区,就是你平时存放代码的地方。
Index/Stage:暂存区,用于临时存放你的改动,事实上他只是一个文件,保存即将提交到文件列表的信息
Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面拥有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。
Remote:远程仓库,托管代码的服务器,可以简单认为是你项目组中的一台电脑用于远程数据交换。
本地三个区域确切的说因该是git仓库中HEAD指向的版本
工作流程
在工作目录中添加,修改文件
将需要进行版本控制的文件放入暂存区域
将暂存区域的文件提交到git仓库
因此,git管理文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
创建工作目录与常用指令
工作目录(Work Space)一般就是Git帮助你管理的文件夹,可以使你创建项目的目录,也可以是一个空文件夹,建议不要有中文。
日常记住下图6个指令:
本地仓库搭建
创建本地仓库的方法有两种:一种是创建全新的仓库,另外一种是克隆远程仓库。
# 在当前目录新建一个Git代码库
$ git init
克隆远程仓库
# 克隆一个项目和它的整个代码历史(版本信息)
$ git clone [url]
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 commit -m "消息内容" 提交暂存区中的内容到本地仓库 -m 提交信息
忽略文件
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立".gitignore"文件,此文件有如下规则:
#为注释
*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
github 是有墙的,比较慢,在国内的话,我们一般使用 gitee ,公司中有时候会搭建自己的gitlab服务器
# 进入 C:\Users\Administrator\.ssh 目录
# 生成公钥
ssh-keygen
这里可以自己先生成一个.ssh文件夹
将id_res.pub(公钥)中的内容复制,打开gitee官网,在SSH公钥里进行添加。
常用分支指令:
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
git init 进行初始化
git add * 把文件添加到暂存区
git status 查看文件状态
git commit -m “首页:头部,项目”
git clone [url]
填写用户名,密码
git add * 把文件添加到暂存区
git status 查看文件状态
git commit -m “首页:头部,项目”
git push 向远程仓库进行提交
创建团队,添加成员,设置权限
项目经理上传整体规划的目录文件(空文件无法上传)
成员进行克隆,编写。
先拉取:git pull(不冲突,可以多拉取几次)
再提交:git push
上传:一个一个上传
提交:早上:pull;工作:晚上:push
git log
命令 打印出所有提交记录,找到最近一次提交记录的commitid,如果用的AS的话,屎黄色那个就是commitId, git reset --hard 版本号
,提示 HEAD is now at 版本号 提交的内容说明,这时候恢复的是你本地仓库的数据git push -f
强制提交代码到仓库,这样回滚成功假若你已经在本地仓库进行了commit,但后悔了我们可以使用如下指令:
用这种方式可以不留痕迹的撤回这次的commit
用这种方式,可以将你刚才commit的代码暂存在缓存区
上面说的[commitId]是你使用
git log
指令获取的一串可以标识每个commit的代码
输入下面的指令
git remote add origin https://gitee.com/super_li_yu/return-to-the-palace.git
git push -u origin "master"
accept incoming change接受其他分支的内容
accept current change 接受该分支的代码
accept both change 接受两个代码
master主支不要随便提交