集中式(svn)
svn因为每次存的都是差异 需要的硬盘空间会相对的小一点 可是回滚的速度会很慢
优点:
代码存放在单一的服务器上 便于项目的管理
缺点:
服务器宕机: 员工写的代码得不到保障
服务器炸了: 整个项目的历史记录都会丢失
分布式(git)
git每次存的都是项目的完整快照 需要的硬盘空间会相对大一点
(Git团队对代码做了极致的压缩 最终需要的实际空间比svn多不了太多 可是Git的回滚速度极快)
优点:
完全的分布式
缺点:
学习起来比SVN陡峭
**见百度网盘的资料,有pdf和笔记**
git底层命令
- clear 清除屏幕
- echo ‘test content’>test.txt 新建一个test.txt文件,并写入内容test content
- find 目录名 将对应目录下的所有文件以及文件目录平铺在控制台
- find 目录名 -type f 将对应目录下的文件平铺在控制台
- rm 文件名 删除文件
- mv 源文件 重命名文件 重命名
- cat 文件的url 查找对应文件的内容
- vim 文件的url
i 编辑模式
q! 强制退出(不保存)
wq 保存退出
set nu 设置行号
状态
两种:已跟踪 或 未跟踪
对于已跟踪的文件有3种状态:已提交,已修改,已暂存(Changes to be committed)
git add就是把目标文件快照放入暂存区域
git ls-files -s 查看暂存区
已经暂存是绿的
已经修改未暂存是红的
git reflog 查看完整的操作
git lol 是查看你想看到的日志
提交对象对应一个树对象
GitHub团队协作
上传到GitHub操作
- 在GitHub上新建一个仓库
- git init
初始化
- git add ./
跟踪
- git commit -m “msg”
提交msg进行描述
- git remote add anjia https链接
- git push anjia master
将anjia以分支master上传到远程仓库
成员使用仓库
- git clone 下载链接
- 只有在克隆的时候 本地分支 和 远程跟踪分支(别名/master) 是有同步关系的 - 同步关系下,本地分支 跟 远程跟踪分支的内容互相同步,互相影响
- 在本地进行编码修改
- git push origin master
推到远程仓库,默认名字为origin 分支为master
注意:在成员提交之前,项目经理要进行邀请,否则不能提交成功
邀请:在项目的settings里选择collaborators里搜索成员名字,选择添加。等待成员同意
- 项目经理使用git fetch anjia 来更新,可以看到成员的修改
- 项目经理get merge 远程跟踪分支合并