git是分布式的版本控制工具,可离线,svn是集中式的,要联网操作.集中式的所有数据都放在服务器端,如果服务器宕机,则历史记录也可能就丢失了,这叫做单点故障.分布式的数据
可直接保存在客户端.
为何要版本控制呢?比如服务端有一段代码,小明和小红都准备对它进行修改,小明先改好并上传更新,过一会儿小红也改好了,也上传更新了,所以最终服务器端保留的仅有小红的代码,小明的被覆盖了,这是我们不愿看到的.
git功能很强大:
允许多人并行协同修改服务端的文件;
数据可以备份,能保存提交过的历史状态,历史记录;
版本管理,采用文件系统快照的方式,不保存重复数据,节约存储空间,提高运行效率;
对团队中参与开发的人员进行权限控制,对团队外开发者贡献的代码进行审核;
分支管理,多线并行开发,提高效率.
至于git的命令,跟linux一样的风格,常用的有:
1. git init 初始化
2. git add file 添加到暂存区
至于 warning: LF will be replaced by CRLF in good.txt. 用回车换行替换换行符
git config core.autocrlf 我在windows上使用,True即可.
3. git rm --cached file 从暂存区移除
4. git status 查看状态
5. git commit file 提交到本地库
提交会提示你添加注释,会调用编辑器,我的调用了sublime,不太习惯,还是喜欢vim,通过命令git config --global core.editor vim 实现更改.
6. cat file 查看文件内容,显示在主控台
7. git commit -m "注释" file 直接添加注释提交到本地库,就不用调用vim编辑器了
8. git log 查看版本
若多屏显示,则 空格向下翻页,b向上翻,q退出
9. git reflog 简洁些, 有HEAD值 ,HEAD相当于指针,指向版本,操作它可实现版本切换
10. git reset --hard 部分哈希值如(9a4ehb3) 切换到对应的版本
11. git reset --hard HEAD^ 回退一个版本,加几个^就回退几个版本
12. git reset --hard HEAD~3 回退三个版本
这里的hard参数,表示将工作区,暂存区,本地库三者都回退到某个版本,对应的还有soft,mixed参数soft只回退本地库,mixed回退本地库和暂存区