Git是什么鬼,适合小白观看~

      首先我是上来就开始用Git,然后同事跑我这里一顿命令,窗口从哪里打开的都不知道,操作完问题解决就走了,what?我完全没看懂他在做什么,下一次无论我要克隆项目还是提交我还是不会,于是同事又过来一顿弄,最后还是没看懂~最后就想说学东西最好是系统的去学习,由浅到深,无论是别人说出表面的东西还是更深的东西,都需要自己首先对Git有些掌握才能听得懂,否则这一块那一块的最终还是不会懂~所以就花了几个小时的时间学习并简单总结以下。

//什么是版本库

     版本库又名仓库(repository),可以简单理解成一个目录(存放好多版本的目录),目录里所有文件都被Git管理起来,每个文件的修改,删除,Git都会跟踪,以便任何时候都可以追踪历史或者在将来某一时刻可以还原,说到这你可能还不是Git到底是什么鬼,我简单理解就是我们所做的项目经常进行修改等操作,导致项目有很多版本,Git就是对这些版本进行控制处理的系统工具,还不懂也正常,继续往下看吧---->

Git是什么鬼,适合小白观看~

以上图片来自https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

      图片中工作区里面有一个隐藏目录 .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 protected]"



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 工作区修改->添加到暂存区->提交到本地版本库,那么则进行版本回退


总结

以上所有都是自己一些简单的总结和理解,如果看不懂可以参考以下地址有详细系统的讲解:

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000