Git简述
Git历史
同生活中的许多了不起该事件那样,Git 问世于两个极具争斗趁势创捷伊年代。Linux Mach开源工程项目有著共约众广的参加者。大多数的 Linux Mach保护组织工作都花在了递交插件和留存存档的繁杂外交事务上(1991-2002初年)。到 2002 年,Linux控制系统已经发展了二十年了,标识符库之大让Linus极难继续通过纯手工方式管理组织工作了,于是整座工程认证组织工作开始投入使用分布式控制系统版控制技术 BitKeeper 来管理组织工作和保护标识符。
到 2005 年的时候,合作开发 BitKeeper 的商业性公司同 Linux Mach开源街道社区的合作关系结束,她们归还了全然免费使用 BitKeeper 的行政权。这就逼使 Linux 开源街道社区(特别是 Linux的创始者 Linus Torvalds )不得已举一反三,只有合作开发两套属于自己的版控制技术才不致再有。她们对捷伊控制系统订了若干个目标:
速率单纯的设计对线性合作开发商业性模式的强而有力支持(容许上百个博戈达合作开发的组成部分)全然分布式控制系统有能力高效率管理组织工作类似于 Linux Mach那样的Sierentz工程项目(速率和信息量)Git是甚么
Git是这款全然免费、开源的分布式控制系统版控制技术,用于灵巧高效率地处置任何或小或大的工程项目。
Git是两个开源的分布式控制系统版控制技术,能有效、高速路的处置从极小到非常大的工程项目版管理组织工作。Git 是 Linus Torvalds 为了协助管理组织工作 Linux Mach合作开发而合作开发的两个开源的版多媒体播放。
官方网站门牌号为:Git
Git特点
缺点:
适宜分布式控制系统合作开发,特别强调子代;
公用伺服器压力和信息量都不会太大;
速率快、灵巧;
任一两个合作开发人员之间能很容易的解决武装冲突;
app组织工作。
缺点:
标识符可扩展性差,一旦合作开发人员把整座库布季夫下来就能全然公开所有标识符和版信息;
权限控制不友好;如果需要对合作开发人员限制各种权限的建议使用SVN。
Git与SVN的区别
SVN是集中式版控制技术,而Git是分布式控制系统版控制技术,Git与SVN的区别可参考Git与SVN的区别
Git组织工作流程
一般组织工作流程如下:
从远程仓库中布季夫 Git 资源作为本地仓库;从本地仓库中checkout标识符然后进行标识符修改;在递交本地仓库前先将标识符递交到暂存区;递交修改,提交到本地仓库;本地仓库中留存修改的各个历史版;在需要和团队成员共享标识符时,能将修改标识符push到远程仓库。Git 的组织工作流程图如下:
Git的几个核心概念
组织工作区、暂存区、版库、远程仓库
Git和其他版控制技术如SVN的两个不同之处就是有暂存区的概念。
Workspace: 组织工作区,就是你平时存放工程项目标识符的地方
Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是两个文件,留存即将递交到文件列表信息
Repository: 仓库区(或版库),就是安全存放数据的位置,这里面有你递交到所有版的数据。其中HEAD指向最新放入仓库的版
Remote: 远程仓库,托管标识符的伺服器,可以单纯的认为是你工程认证组织工作中的一台电脑用于远程数据交换
组成部分
每次的递交Git都把它们串成一条时间线,这条时间线就是两个组成部分。截止到目前,只有一条时间线,在Git里这个组成部分叫主组成部分,即master组成部分。HEAD指针严格来说不是指向递交,而是指向master,master才是指向递交的。
一开始的时候,master组成部分是一条线,Git用master指向最捷伊递交,再用HEAD指向master,就能确定当前组成部分,以及当前组成部分的递交点:
每次递交,master组成部分都会向前移动一步,这样随着不断递交,master组成部分的线也越来越长。
当我们创建捷伊组成部分,例如dev时,Git新建了两个指针叫dev,指向master相同的递交,再把HEAD指向dev,就表示当前组成部分在dev上:
Git创建两个组成部分很快,因为除了增加两个dev指针,改改HEAD的指向,组织工作区的文件都没有任何变化!
不过切换到了dev分,对组织工作区的修改和提交就是针对dev组成部分了,比如新递交一次后,dev指针往前移动一步,而master指针不变:
假如我们在dev上的组织工作完成了,就能把dev合并到master上。Git怎么合并呢?最单纯的方法,就是直接把master指向dev的当前递交,就完成了合并:
所以Git合并组成部分也很快!就改改指针,组织工作区内容也不变!
合并完组成部分后,甚至能删除dev组成部分。删除dev组成部分就是把dev指针给删掉,删掉后就剩下了一条master组成部分:
远程仓库
远程仓库分为公有远程仓库和私有远程仓库。
公有远程仓库
本质和本地仓库无异,只是这个仓库①不在本地②大家可能都知道③需要将标识符共享到远程仓库④能被其他人布季夫同步标识符等。
一般情况下
私有远程仓库
远程仓库实际上和本地仓库那样,纯粹为了7×24小时开机并交换大家的修改。GitHub就是两个全然免费托管开源标识符的远程仓库。但是对于某些视源标识符如生命的商业性公司来说,既不想公开源标识符,又舍不得给GitHub交保护费,那就只能自己搭建一台Git伺服器作为私有仓库使用。
GitHub远程仓库
在本地创建了两个Git仓库,又想让其他人来协作合作开发,此时就能把本地仓库同步到远程仓库,同时还增加了本地仓库的两个备份。
常用的远程仓库就是github:Build software better, together
Github支持两种同步方式“https”和“ssh”。如果使用https很单纯基本不需要配置就能使用,但是每次递交标识符和下载标识符时都需要输入用户名和密码。而且如果是公司配置的私有git伺服器一般不提供https方式访问。
忽略文件
在工程中,并不是所有文件都需要留存到版库中的,例如“target”目录及目录下的文件就能忽略。详见:优课达:Java阿宝进阶,Git忽略文件.gitignore详解
常用Git命令
经常使用 Git ,但是很多命令还是记不住。但要熟练掌握,恐怕要记住40~60个命令,接下来我会整理了一份常用Git命令清单:优课达:Java阿宝进阶,常用Git命令有哪些?
原创:ThinkWon优课达:程序员阿宝进阶Java,JDK怎么安装与配置环境变量?
优课达:程序员面试Java编程知识大全:最新版Java基础知识面试题(一)
优课达:程序员面试Java编程知识大全:最新版Java集合容器面试题(一)
优课达:程序员面试Java编程知识大全:最新版Java虚拟机(JVM)面试题(一)
听说给好内容点赞,知乎就会继续给你推荐相关的优质回答,再也不怕没学习素材了~~