SVN
架构图
本地工作目录(work directory)
- 开发者进行开发的地方
版本仓库(Respository)
- 保存各个版本和维护更新
- 动态维护分支(功能分支再向主分支合并)
checkout 第一次导下来,受到版本控制,**.svn
import
export 不受版本控制
delete
revert
update 遇到冲突时手动更新
commit
Branch+Merge分支管理
Git
特点:
1. Git采取的是快照而非svn对比不同(底层操作比上层操作更加快速)
2. Git几乎基本所有操作都是本地的
3. Git三种状态:未修改,已修改,已同步到远端版本仓库
三个区域:
- 远端仓库
- 本地仓库
- 临时工作区域(已经add未commit)
- 工作区域
本地修改
全局身份设置:
git config --global user.name "xx"
git config --global user.email xxx
本地仓库初始化
git init
git add xxx 加入记录跟踪
git commit xxx -m xxx 本地仓库提交修改
从远端 checkout 到本地仓库
git clone xxxx
显示远程仓库的地址
git remote -v
查看当前git状态
git status
忽略文件或者文件名
echo "xxx" >> .gitignore
此命令比较的是工作目录(Working tree)和暂存区域快照(index)之间的差异
git diff
查看已经暂存起来的文件(staged)和上次提交时的快照之间(HEAD)的差异
git diff --staged
git diff --cached
git log
查看提交的版本信息
git reset –mixed xx
此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
git reset –soft xx
回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset –hard xx
彻底回退到某个版本,本地的源码也会变为上一个版本的内容
删除文件
git rm xxx
移动文件
git mv xxx
远程修改
把远端仓库拿下来到本地仓库并且合并
git pull xxx
把远端仓库拿下来到本地仓库但是并不合并,而是新建立分支
git fetch xxx
推送,权限足够
git push orgin master
打补丁,权限不足
git format-patch origin/master
分支管理
查看分支
git branch
创建分支
git branch [branchname]
切换分支(分支互不影响)
git checkout [branchname]
分支修改比较
git diff [branchname] [branchname]
合并分支
git checkout [branchname]
git pull . [branchname]
或者
git merge xxx HEAD [branchname]
打标签
git tag -a xxx -m xxx
会退到标签
git checkout [tagname]
SVN和Git区别
svn是CS结构,Git是分布式结构
svn有工作区域,git有工作区域和本地仓库
svn不方便离线操作,git离线操作方便
svn速度慢,git速度快
svn的branch新建目录,git的branch不新建目录