协同开发(版本控制器)
一、SVN
-
SVN是集中式服务器,整个公司用的是同一台服务器
-
服务器端创建仓库
-
SVN客户端操作
- 关联服务器端:检出关联
- 提交:SVN commit
- 更新:SVN update
- 冲突:服务器只能基于一个版本进行升级(手动解决)
先更新,后提交
二、Git
Git是分布式服务器,集中式 vs 分布式
自报家门:你的名字和Email地址
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
1.创建仓库(创建版本库):
git init
2.添加到版本库:
git add filename
git commit -m '注释'
3.版本回退管理:
git status
查看当前版本库状态git diff
查看具体修改内容git log
查看历史提交版本信息git log --pretty=oneline
查看历史版本信息简约化git reset --hard HEAD^
历史版本回退,一个^
回退一个版本git reset --hard
版本号 历史版本回退git reflog
记录你的每一次命令
4.工作区和暂存区、版本库
工作区:工作目录
暂存区:git add
版本库:git commit
5.管理修改(操作)
Git跟踪并管理的是修改,而非文件。记录、提交操作
6.撤销修改
- 自修改后还没有被放到暂存区:
git checkout -- fileName
- 已经添加到暂存区后:
git reset HEAD fileName
git checkout -- fileName
- 已经条件到版本库里 参考“ 3.版本回退 ”
7.删除文件
- 自然删除,未被添加到版本库:
rm fileName
(右键删除) - 已经添加到版本库:
- 彻底删除:
rm fileName
(右键删除)git rm fileName
git commit -m 'remove'
- 恢复原样:
rm fileName
(右键删除)git checkout -- fileName
- 彻底删除:
8.分支管理
- 创建并切换分支:
git checkout -b ‘分支名称’
- 切换分支:
git checkout ‘分支名称’
- 查看分支:
git branch
- 合并分支:
git merge ‘分支名称’
在主分支下合并 - 删除分支:
git branch -d ‘分支名称’
- 创建分支不切换分支:
git branch ‘分支名称’
- 切换分支(新版本):
git switch ‘分支名称’
9.分支解决冲突
合并不同分支提交的内容,最后由master
主分支add
,然后commit
提交
10.关联远程仓库:github
- 创建SSH Key:
ssh-keygen -t rsa -C
"youremail@example.com";在cmd中运行 - 用github账号创建SSH Key的关联
- 创建仓库,上传本地仓库代码
-
git remote add origin
https://github.com/xxx/xxx -
git branch -M main
(可不用) -
git push -u origin master(main)
如果运行②则master
改为main
- 修改代码再次上传:
git push
-
- 上传所有文件
git add .
11.github的忽略文件
在.gitignore
文件中的,不会被上传
12.关联远程仓库:gitee
(码云)
-
创建远程仓库
-
克隆远程仓库:
git clone '远端仓库url'
-
添加本地仓库
git add .
git commit -m '注释'
git push
-
向本地拉取
git pull
13.远程仓库操作容易产生冲突
-
多人同时上传
解决:
git pull
- 保留多人修改的内容
git add ‘filename’
git commit -m '注释'
git push
-
一个人修改上传,我本地也修改代码,但我不把自己修改了的代码更新到仓库。这时拉取
git pull
,会覆盖自己所写代码解决:
- 每次更新前,先把自己的代码提交到本地仓库
git add '提交的文件名'
git commit -m '提交注释'
3.git 与 svn 的区别在哪里?
git 和 svn 最大的区别在于 git 是分布式的,而 svn 是集中式的。因此我们不能再离线的情况下使用 svn。如果服务器
出现问题,我们就没有办法使用 svn 来提交我们的代码。
svn 中的分支是整个版本库的复制的一份完整目录,而 git 的分支是指针指向某次提交,因此 git 的分支创建更加开销更小
并且分支上的变化不会影响到其他人。svn 的分支变化会影响到所有的人。
svn 的指令相对于 git 来说要简单一些,比 git 更容易上手。
详细资料可以参考:
《常见工作流比较》
《对比 Git 与 SVN,这篇讲的很易懂》
《GIT 与 SVN 世纪大战》
《Git 学习小记之分支原理》