首先我是上来就开始用 Git,然后同事跑我这里一顿命令,窗口从哪里打开的都不知道,操作完问题解决就走了,what?我完全没看懂他在做什么,下一次无论我要克隆项目还是提交我还是不会,于是同事又过来一顿弄,最后还是没看懂 ~ 最后就想说学东西最好是系统的去学习,由浅到深,无论是别人说出表面的东西还是更深的东西,都需要自己首先对 Git 有些掌握才能听得懂,否则这一块那一块的最终还是不会懂 ~ 所以就花了几个小时的时间学习并简单总结以下。
什么是版本库
版本库又名仓库(repository),可以简单理解成一个目录(存放好多版本的目录),目录里所有文件都被 Git 管理起来,每个文件的修改,删除,Git 都会跟踪,以便任何时候都可以追踪历史或者在将来某一时刻可以还原,说到这你可能还不是 Git 到底是什么鬼,我简单理解就是我们所做的项目经常进行修改等操作,导致项目有很多版本,Git 就是对这些版本进行控制处理的系统工具,还不懂也正常,继续往下看吧
以上图片来自 GIT教程,图片中工作区里面有一个隐藏目录 .git,其中包括stage暂存区和 git 自动创建的第一个分支 master 以及指向 master 的指针叫 HEAD,git add 把文件添加进去,实际上就是添加到暂存区,git commit 提交更改,实际上把暂存区的所有内容提交到分支,每次修改如何不 add 到暂存区,就不会加入到 commit 中,就不会被提交到版本库。
SVN,VSN 和 Git 的对比:
1 SVN 集中式的版本控制系统,必须联网才能工作,版本库存放在中央服务器,像一个图书馆,要想改一本书,必须先从图书馆借出来,改完再放回图书馆
2 Git 分布式的版本控制系统,没有中央服务器,每个人电脑里都有一个版本库,但是分布式版本控制系统通常有一台充当"中央服务器"的电脑,用来方便大家的修改。
3 Git 强大的分支管理,远远超过 SVN
常用命令
1 查看用户名和邮箱地址
$ git config user.name
$ git config user.email
2 分布式版本控制系统,需要每个机器配置名字和email地址
$ git config ——global user.name "your name"
$ git config ——global user.email "email@example.com"
3 其他常用命令
$ git init 初始化一个 git 仓库
$ git status 查看仓库状态(例如是否有修改后待提交的文件或者版本改变)
$ git diff 查看 difference
添加文件到Git仓库,分两步:
$ git add <file> 添加到本地文件(反复多次使用,添加多个文件)或者理解成添加到暂存区
$ git commit 提交到本地版本库(可以一次提交多个)完成
版本回退
在 git 中用 HEAD 来表示版本上一次是 HEAD^,上上一次 HEAD^,上100个HEAD~100。323234yrgehf43..是 commit id 版本号,如果都用 1,2,3 作为版本号,会冲突,所以使用 SHA1 计算出来非常大的数字,用十六进制表示
穿梭回以前
$ git log 查看最近到最远的提交日志历史,方便确定回退到哪个版本
因为多人在同一版本库里工作
$ git reset --hard commit_id 重置到指定版本号版
从以前回到现在
$ git reflog 查看命令,已确定回到未来哪个版本
三种情况小结
情况1 当乱改了工作区某个文件的内容,还添加到了暂存区,用 $ git checkout --file 该行命令撤回修改
情况2 当乱改了工作区又添加到了暂存区,想丢弃修改分两步,第一步用 git reset HEAD file 回到情况1,然后再执行情况1
情况3 工作区修改->添加到暂存区->提交到本地版本库,那么则进行版本回退
总结
以上所有都是自己一些简单的总结和理解,如果看不懂可以参考 Git详细教程讲解 。