目录
一、Svn简介
SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。
1、工作原理
版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。
2、操作命令
2.1 提交代码
- 鼠标右键 -> SVN Update - > 确认
2.2 检出代码
- 鼠标右键要检出的项目 -> checkout -> 设置检出位置 -> 确认
2.3 撤回代码
1,打开show log 日志
2,选择自己提交的版本
3,右键鼠标
4,点击revert change from this version恢复到之前版本。
二、Git简介
git是一个开源的分布式版本控制工具,相比svn拥有本地仓库的概念,
1、工作原理
首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
2、操作命令
命令 | 解释 |
---|---|
git config --global user.name “Your Name” | 你的名字 |
git config --global user.email “email@exampl.com” | 你的邮箱 |
ssh-keygen -t rsa -C “邮箱” | 生成密钥,在C盘用户下.ssh文件夹中,pub密钥复制粘贴到github中 |
git init | 创建本地仓库 |
git add . | 提交被修改、新文件到暂存区,不包括被删除文件 |
git add -A | 提交所有变化 |
git add -u | 提交被修改、被删除文件到暂存区,不包括新文件 |
git commit -m “描述” | 提交代码到分支 |
git remote add origin https://github.com/用户名/项目名.git | 提交项目到远程服务器 |
git clone git@github.com:xxxx.git | 下载项目到本地 |
git push origin master | 推送项目到主分支 |
git log | 查看历史提交记录 |
git rest --hard HEAD^ | 版本回退 |
git checkout – 文件名.后缀 | 撤销修改 |
git rest HEAD 文件名.后缀 | add 之后撤回到工作区 |
git reflog | 查看历史提交、版本回退 |
git reset --hard (log号) | git reflog 之后,执行此命令可以找回历史版本的代码 |
git checkout -b 分支名 | 创建并切换分支 |
git branch | 查看当前分支 |
git branch -a | 查看所有分支 |
3、远程操作
3.1 没有远程仓库
- 创建本地仓库:git init
- 添加到暂存区:git add .
- 提交到分支:git commit -m "描述“
- 推送到远程服务器:git remote add origin https://github.com/项目名/用户名.git
- 推送项目到主分支:git push origin master
3.2 有远程仓库
执行3.1 命令 4 ~ 5
4、异常总结与处理
-
问题:error: failed to push some refs to
解决方式:git pull --rebase origin master -
问题:fatal: remote origin already exists
解决方式:git remote rm origin -
问题:(git pull origin master代码异常)fatal: refusing to merge unrelated histories
解决方式: git pull origin master --allow-unrelated-histories (强制合并远程和本地的代码,手动解决冲突后,add … commit … push ) -
问题:git push origin master 每次报错
解决方式:先 git pull origin master 再 git push 项目
5、如何github和码云一起提交?
- 进入.git 文件夹下面 config文件
- 码云: git push origin master
- github: git push second master