git的学习(一)

前言:来到菜鸟以后,git取代了svn成为了新的版本控制工具,对于这个新的管理工具,为了上手快,都是快餐方式的学习,能满自己简单的日常需求,但是一旦遇到问题还是难以驾驭。最为一个版本控制工具,首先明确自己的学习目标是熟练使用和处理问题,原理方面做个简单的理解就好了就不再深究了。

第一篇:git的简介

git号 称是世界上最强大的版本控制工具,虽然我只用过svn,了解过cvs,对于他说的这个最强大的概念我不敢乱下定论。但是很明显它确实功能上,使用方面要强出前者很多。

git可以清晰记录每次的操作,这个是个相当棒的功能,设想当你删除一大片代码之后,发现删除出现了错误,只有在你的log日志中查看最初的版本号,就可以像事务回滚一样的将代码恢复到定义的版本号状态。通常,我们的代码工作都是多人协作来完成的,对于同一段代码可能有多个人在做需求实现,git清晰的记录着每个人的代码操作,这样在大家各自完成代码操作后,合并方面会显得更加容易。

第一次接触git命令的时候,我就发现这命令和Linux的命令是十分相似的,后来自己查资料才发现原来git真的是linus搞出来的,这是个超级牛人。据说linus用了两个星期用C语言写出来的!!!到2008年github上线,git的争霸之路从此开始。git和svn、cvs根本不同的是它是分布式版本控制系统,而前者是集中式的版本控制工具。集中式版本控制工具的缺陷在于它是依赖于一台中央服务器的,所有人在修改相同代码段的时候都需要从中央服务器中获得最新的版本,然后进行修改。这样对网速的要求是很高的而安全性是相对低的,如果中央服务器中的资源灭失了,很难在恢复源代码。然后分布式版本控制工具就完全可以避免这样的问题,因为在分布式版本控制工具中是没有中央服务器的概念的,每一台机器都会有个完整的版本库。即便是没有网络也是可以正常工作的,可想而知,每台机器上都有完整的代码库,这样即便是其中的一台机器出现了故障问题,对于整个资源来说并不能构成致命的威胁。不同的程序员对于相同的代码进行修改后,也只需要在两台机器之间进行相互推送进行对比,解决冲突就好了。但是通常情况下git也是有一个中央服务器的,但是这个服务器的主要目的是为大家的修改提供更好的服务。

第二篇:git的安装

虽然有用过一段时间的mac,也尽管无数开发和设计跟我吐槽过windows是最烂的开发系统,但是还是多年的操作习惯和工作电脑是windows的系统。这里,自己只总结一点git在windows上的安装。复杂的cygwin那一套就不搞了,本来linux玩的就不行,我还是老老实实的用别人将git和模拟环境打包好的msysgit吧。然后傻瓜操作一路下去。安装完成后再菜单里找到git----->git bash,点击后弹出xshell差不多的黑窗口,那就是安装好了。

安装完了以后,需要你通过命令来设置用户名和邮箱。相当于给自己在git上做一个标示。

$ git config --global user.name "GeorgeZhang"
$ git config --global user.email "georgezhang@gmail.com"

第三篇:创建git的版本库

git的版本库也就是repository,它是位于本机上的,而在这个repository中的所有文件都会受到来自git的监控。一举一动的都会被监测。创建git版本库的方法也是极其简单的,找个合适的位置,也就是你将来用来放项目代码的位置,进行。

$ git init
Initialized empty Git repository in /Users/me/tools/.git/

这样就会创建好的一个空的版本库,但是这个目录下会多出一个.git的目录。这个目录是用来监控库中的代码一举一动的,通常情况下,这个文件夹是不需要任何操作的。

第四篇:git的远程仓库和从远程仓库上克隆代码

git是一个分布式的版本控制工具,相同的git库存在于不同的电脑端,那么git库就一定会有个最原始的版本的git库,其他的git库通过clone来达到一致。而处于不同位置的git库是没有主次之分的。通常的开发环境中,往往是找一台服务器24小时开机,充当原始库的角色,其他的库都通过clone来保证与中央库一致。并可以将各自的代码推送到服务器中远程库中,同是也可以从库中拉取别人修改的代码。当然你进入一家公司,通常第一步是从公司的远程库中拿到相关的代码。所以,根据现实开发中的情况,以下来重点介绍git的使用方法。

1、首先你需要生成以下公钥和秘钥,当然公钥的重要程度,我个人觉得远大于私钥的重要程度。毕竟他是你在git江湖上行走的通行证。很显然,哪家公司的代码都不会允许恶意的,不合理的操作。为了避免类似的事故发生git需要准确的记录着所有人的操作。而git就是通过ssh来进行识别的,git是支持ssh协议的,只要gitlab认可你的ssh就可以进行的代码的检出和提交。

生成公钥的命令为:ssh-keygen -t rsa 并按回车3下(按三下是因为有提示你是否需要设置密码,如果设置了每次使用Git都会用到密码,一般都是直接不写为空,直接回车就好了)。会在一个文件夹里面生成一个私钥 id_rsa和一个公钥id_rsa.pub。(可执行start ~命令,生成的公私钥在 .ssh的文件夹里面)

2、检出代码使用   git clone +分支

实际上git是支持多种协议的,出了git协议,也是支持https协议,都说https协议会慢一些,但是其实使用过程中感触并不是很明显。可能这个跟具体的网络环境和工程大小有关吧。

这里解释下分支:分支可以想象成是在创建出来的一个与主干平行的空间,这样的一个场景,如果大家的代码操作修改如果都在主干上进行的,如果其中一个人的代码出现错误或者不完整就可能干扰到别人的代码运行,导致别人的项目起不来。那么如果我创建一个分支,创建出一个平行的空间来进行修改,就不会出现这样的问题,当修改完成后再讲两者合并,解决冲突即可。

这里引用廖雪峰老师的讲解,更浅显易懂:每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向mastermaster才是指向提交的,所以,HEAD指向的就是当前分支。一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:

git-br-initial

每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长;

你看,Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化!

不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变:

git-br-dev-fd

假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并:

git-br-ff-merge

所以Git合并分支也很快!就改改指针,工作区内容也不变!

合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支:

git-br-rm












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值