Git的前世今生及小白使用总结

Q:了解GIT之前需要先了解下什么是版本控制
A:版本控制是一种记录一个若干文件内容变化,以便将来查阅特定版本修改情况的系统。除了项目,你可以对任何类型的文件进行版本控制

Q:为什么使用版本控制呢:
A:采用版本控制系统(VCS)是个明治的选择。有了它就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到某个时间点的状态,可以比较文件的变化细节,查出最后是谁修改了那个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。适用版本控制系统就算你对项目删除,修改错误,都没关系,可以很容易恢复到原来的状态

Q:版本控制的发展历程:
A:

1.本地版本控制
    描述:大多是采用某种简单的数据库来记录文件的历次更新差异,其中最流行的一种叫RCS
  原理:在硬盘上保存补丁集(补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容

如何让不同系统上的开发者协同工作?
2.集中化的版本控制系统

       描述和原理:集中化的版本控制系统(Centralized Version Contol Systems)是单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端链接到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。比较出名的注入CVS,Subversion(SVN)以及Perforce等
     缺陷:
     1.单点故障:
         如果服务器宕机,谁都无法提交更新,也就无法协同工作。如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问将丢失所有数据----包括项目的整个变更历史,只剩下人们在各自机器上包括的单独快照
        
     2.需要联网
         因为服务器是在网络环境上面,其他客户端想连接服务器就必须要使用网络
        
为了解决以上问题,下面的诞生了
3.分布式版本控制
    描述:分布式版本控制系统(Distributed Version Control System)。Git就是典型的分布式版本控制,还有Mercurial,Bazaar以及Darcs等
    原理:客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
    缺点:需要联网

Q:Git和其他版本控制系统的存储区别
A:Git的存储方式是快照技术,而其他版本控制系统的存储基本上都是增量存储。

Q:什么是快照技术
A:Git在每次git add即将内容添加到缓存区时会进行一次快照,快照就像给当时的整个目录以及文件照了一张相,在任何时候通过快照就能将目录以及文件恢复到发起快照点的状态。Git是这样生成快照的,对于没有变化的文件,会生成一个引用指向源文件的位置以节省空间提高效率,对于变化了的文件则将整个文件存储,git每个版本存储的是一个快照。

Q:什么是增量存储
A:所谓增量存储,值得是除了第一个版本存储的是每个文件的完整内容,之后的版本存储的是每个文件相对于上一个版本对应文件的变化的内容

Q:Git的三种文件状态
A:Git在未进行commit操作之前,存在三种状态:Untracked files, Changes not staged for commit 及 Changes to be committed,每种状态之间可以随意进行互相转换。

Q:Git的命令操作
A:

git init新建一个git
git clone [url] 从远程代码仓库拉一个
git add . 提交所有修改到暂存区
git commit -m "提交描述" 提交暂存区修改内容到本地仓库
git push 推送到远程仓库
.gitignore文件  忽略文件配置
git rm filename  从暂存区移除
git status 查看文件状态
git push origin master 推送到远程仓库master分支
git remote add origin  仓库关联
git log 查询以前的提交历史
git log --author=bob 查看bob的提交历史
git commit --amend 撤销操作
git reset filename 取消上一步操作,可以使用在git add ,git commit 之后
git brance test 新建本地分支
git checkout test 切换到test分支
git chekcout -b feature_x 上两步的合并操作,一步到位
git merge test 合并分支
git branch -d test 删掉test分支
git push origin test:test 把分支推送到远程仓库

你可能感兴趣的:(git)