集中式 vs 分布式管理工具
- 集中式(svn,cvs):版本库是集中存放在中央服务器的,工作时要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。缺点:必须联网才能工作,要求带宽。
- 分布式(git):分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。
基本操作
- 创建版本库:创建文件夹,cd到文件夹内,git init
- 添加文件:git add <file_name>
- 提交到版本库:git commit -m "<commont>" 注意:可以多次add后一次commit
- 查看但前状态:git status
- 查看修改内容:git diff
版本回退
- 查看提交的历史版本:git log (--pretty=oneline,简化查看信息)
- 查看历史命令:git reflog
- 退回到上一个版本:git reset --hard HEAD^/版本号 (HEAD为指向当前版本的指针,HEAD^为上一个,HEAD^^……,版本回退只是更改了HEAD指针的位置)
工作区 vs 版本库
- 工作区(除.git文件夹外的部分)
- 版本库(.git文件):暂存区(stage)+分支(master默认)+HEAD指针
- 用
git add
把文件添加进去,实际上就是把文件修改添加到暂存区 - 用
git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支 - 每次修改,如果不
add
到暂存区,那就不会加入到commit
中
管理修改
- git管理的是修改,而不是文件
- 删除文件撤销修改
- rm <file_name> + git rm <file_name>
- 恢复删除:git checkout -- <file_name>
- 取消工作区的修改,用版本库现存代替工作区的修改让,即这个文件回到最近一次
git commit
或git add
时的状态:git checkout -- <file_name> - 暂存区修改退回到工作区:git reset HEAD <file_name>