版本管理的概念
版本管理是软件配置管理的基础,它管理并保护开发者的软件资源。
一个软件从建立,到最后发布上线,如果把每一次提交都算上,你觉得它大概要经历几万个版本?
版本管理最大的好处就是可以保留我们的历史版本,在代码开发到一半的时候,不至于无故丢失,还可以查看BUG的来龙去脉。那怎样做到这一点呢?如果每一次修改,都保留一个文件副本,那需要多少硬盘才能装的下?
版本管理种类:集中式的版本管理和分布式的版本管理。实现的控制软件分别有SVN和Git。
一.SVN是集中式版本管理,大家都提交文件到同一个地方,这服务器的存储压力就大了。因此它对于文件的 版本控制,只记录修改部分,不产生多余的数据。
SVN的介绍
SVN是Subversion的简称,是一个开放源代码的集中式的版本控制系统。
集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者基本上可以说是无法工作的。
最大的缺点:这是一个集中式的版本管理,所有的数据都经过中央服务器进行交换同步。如果不能连接到服务器上,基本上不可以工作,如果服务器不能连接上,就不能提交,还原,对比等等。
0-安装svn客户端
1.你们公司用的svn保存记录代码,拿到 svn地址 和账号密码
两个SVN仓库:
2.下载代码 checkout 代码
3.每天开发新代码之前都需要 先update,然后开发,开完后再 commit提交
二、Git是什么?
Git是目前世界上最先进的分布式版本控制系统。
SVN与Git的最主要的区别?
SVN的存储需要依赖一个服务器,而git所有的东西是放在线上的。节约成本,省时省力。
git 是分布式的,svn 不是。
git 按照源数据的方式存储内容,svn 是按照文件的形式存储
git 和 svn 中的分支不同。
git 没有全局版本号,svn 有。
git 内容的完整性优于 svn。
工作区:个人 PC 中能看到的文件目录结构
暂存区:stage/index,一般存放在.git/index 中,所以 git 中的暂存区也会称为索引。
版本库:工作区中的.git 隐藏文件,不算是工作区,而是 Git 的版本库。
三、在windows上如何安装Git?
下一步 ---(next)
安装成功后会出现这两个东西
运行Git Bash会出现如下结果:
四、GitHub注册
https://github.com/打开GitHub官网 。
熟悉的Hello world,然而并没有什么用。
安装结束后需要进行一些设置
命令 1 . cd D: 进入 相应的磁盘
命令 2 . mkdir '你自己定义的文件夹名'
命令 3 . cd '你自己定义的文件夹名'
命令 4. pwd 显示(你自己定义的文件夹名)的路径
命令 5. ll 显示当前文件夹所有子文件,ll -a 显示隐藏和未隐藏文件
命令 6. echo "hello" >> test.txt 创建记事本并向当前记事本追加hello
命令 7. cat test.txt 查看指定文件内容
然后!最重要的步骤来了!!git init
命令 1 . git init
显示成功后去相应的文件夹中查看是不是多了一个git文件
这个文件夹不要乱动!!这个文件夹不要乱动!!这个文件夹不要乱动!!
这个文件夹就是你的版本库了,把项目放在文件夹下。
命令1. git config --global user.name "你的git名称"
命令2. git config --global user.email "你的git验证邮箱"
现在进行一个测试。在当前目录先建立一个readme.txt文件,并且随便写的什么。
五、如何将文件提交到git服务器
1.打开 Git Bash
命令 1. git add ‘文件名’
git add .
git add --all
git add -A
把咱们的文件存放在一个神秘的地方 >>>> 暂存区 (暂存区在本机)
2.把文件提交到仓库中去。
命令 1 . git commit -m '我提交时候的备注(相当于注释)'
3.查看commit状态
命令1 git status
出现 如下提示就说明commit是成功的。
修改下readme.txt里面的内容。并重新使用git status命令 。
会发现出现了一些变化。git告诉我们,git进行了一些修改,但是这些修改并没有被提交。
4.查看修改内容。
命令1 git diff 你的文件名 会出现更改信息,发现多了两个换行, 多了7654321内容;
将更改后的东西提交上去,和之前一样。先add 然后再commit 。
5.版本退回
命令1. git log ( 修改日志)
退回
命令 1 . git reset --hard HEAD^ 退回到上个版本 如果需要退回好多版本就在后面加上 ^ 例: git reset --hard HEAD^^退回两个版本。
然后去查看readme.txt是否成功退回。
6.删除
新建一个 b.txt
然后commit到库中。 并删除。
命令1. git add
命令2. git commit -m ‘备注’
命令3. rm b.txt 这个是删除b文件的命令
回过头来看文件夹中的b.txt
b.txt不见了,查看下状态。
可以commit,可以放弃修改 git reset --hard 版本号来回复文件。
后连接本地仓库,并将自己的库push到服务器中去。
命令1. git remote add originhttps://github.com/你的账号/你的项目名称
命令2. git push -u origin master 将本地的库推送到master分支 (就是推送到服务器上)
在服务器上查看是否推送成功。
从现在开始,只需要git push origin master就可以吧本机的推送过去了。
从服务器拉去数据, git clone
命令1. git clonehttps://github.com/yanghuaizhi1210/GitTest
将服务器端的数据克隆过来。
克隆之后可以直接向当前项目上传文件,直接git push即可
如果输入$ git remote add origingit@github.com:djqiang(github帐号名)/gitdemo(项目名).git
提示出错信息:fatal: remote origin already exists.
解决办法如下:
1、先输入$ git remote rm origin
2、再输入$ git remote add origingit@github.com:djqiang/gitdemo.git 就不会报错了!
3、如果输入$ git remote rm origin 还是报错的话,error: Could not remove config section 'remote.origin'. 我们需要修改gitconfig文件的内容
4、找到你的github的安装路 径,我的是C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8\etc
5、找到一个名为gitconfig的文件,打开它把里面的[remote "origin"]那一行删掉就好了!
拓展:标签操作(需要在连接仓库的前提下)
git tag 查看标签
git tag name 创建标签
git push origin name 上传标签
git tag -d name 删除标签
分支操作
git branch 查看分支
git branch name 创建分支
git checkout name 选择分支
git merge name 合并分支(一般需要先选择主分支,然后将其他分支合并到主分支)
git branch -d name 删除分支
git diff
git diff 工作区和暂存区的差别
git diff —cached 暂存区和版本库的差别
gif diff HEAD 工作区和版本库的差别