赞
踩
由于本人公司用的SVN,时间长了对Git的操作有些陌生了,所以写一篇博客来复习并记录一下Git的使用。
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
简单来说就是用于管理多人协同开发项目的技术,一个开发团队有很多人,这些人在共同开发一个项目,那肯定要有一个软件来记录每个人开发的进度之类的,这就是版本控制。
常见的版本控制工具有SVN、Git、CVS、VSS、TFS等。其中目前最常用的两种是SVN与Git。
SVN属于 集中式版本控制
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改
SVN,所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。
Git属于 分布式版本控制
所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。
SVN与Git的区别:
SVN是集中式版本控制系统,版本库是放在中央服务器上的,工作时候的流程就是,首先要将自己本地的项目先update更新到最新的服务器版本,然后工作(敲代码),最后(下班的时候)把自己敲好的代码commit提交到中央服务器。集中式版本控制系统必须联网才能操作,不然就没办法update commit 或者查看历史提交记录,仓库信息之类的,这一系列动作都必须联网才能操作。
Git是分布式版本控制系统,它没有中央服务器这一说,每个人的电脑就是一个完整的版本库,因为仓库信息都在你本地了,所以当你commit或者查看历史版本提交记录时就不需要联网了。但是如果你要pull拉取最新远程仓库到本地,或者将本地仓库push到远程仓库时,还是要联网的!
下载地址:git官网、淘宝镜像 两种方式都可以下载,使用淘宝镜像会快一点。
这里示例使用淘宝镜像下载:
打开下载链接,页面如下,拉到最下面就是git最新的版本:
然后选择适合自己系统的版本,这里选择的是window64位对应的版本:
下载完成后打开,傻瓜式安装下一步即可,安装路径可以改一下。
安装完成后,在桌面或者其他位置,右键点击就可以看到git:
Git CMD:Windows风格的命令行
Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令
Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多
上面这3个都可以操作git,但是使用最多的是Git Bash。Git Bash打开后是以下界面:
Git Bash是采用的Linux风格的命令行,所以要首先对Linux命令有一定的掌握哦~
安装Git后第一件事就是要设置自己的用户名和邮箱:
git config --global user.name "hhl" #名称
git config --global user.email 123456@qq.com #邮箱
设置用户名和邮箱的目的是当你提交代码到远程仓库的时候,历史记录上会显示是谁提交的代码。
但是注意,这里配置的用户名和邮箱只是单纯的为了让远程仓库记录每一次的操作是谁提交的,这里的用户名邮箱和push到远程仓库时身份验证没啥关系(身份验证是ssh协议公钥私钥,或者使用https协议直接在github对应的仓库上添加用户,下面再解释)。
查看Git配置命令:
git config --system --list # 查看系统config
git config --global --list # 查看当前用户(global)配置
配置文件位置:
Git\mingw64\etc\gitconfig Git相关配置
C:\Users\Administrator\ .gitconfig 当前用户的配置,也就是上面用户名和邮箱的配置存储的地方,也可以直接在这个文件中写入配置。
我们需要从github或者gitee上下载代码,那必然会有传输协议,git中主要有四种协议:本地协议(Local),HTTPS 协议,SSH(Secure Shell)协议及 git 协议。其中,本地协议由于目前大都是进行远程开发和共享代码所以一般不常用,而git协议由于缺乏授权机制且较难架设所以也不常用。
所以最常用的就是https协议和ssh协议。上面提到的身份验证,也就是说的这两种的协议对应的身份验证。
先来说一说https协议:
https协议最大的一个好处就是可以使用用户名/密码的形式授权,相较于ssh协议要生成私钥公钥再将公钥上传到服务器简单的很多。缺点是https协议相较于ssh协议速度会较慢。
再来看ssh协议:
ssh协议,需要用户在本地电脑生成一对公钥和私钥(如何生成看下面),公钥是需要给服务器的
服务器添加完我们给的公钥后,我们在自己的电脑上clone 代码时,服务器就会通过它添加的公钥来匹配我们电脑上对应的私钥,若匹配成功,则就可以正常的clone、pull、push代码了,而且使用ssh协议就省略了像https协议每次还要输入用户名密码验证的这个步骤。
注意:你clone代码时用的哪种协议,就要用哪种协议的验证方法,且后续的pull、push都是用的对应的协议。
https协议和ssh协议总结:
如何在本地电脑生成公钥和私钥?
https协议:如果仓库是公共开源的,则用https可直接clone下来,如果仓库是私有的,用https协议clone时需要输入用户名密码验证,必须是仓库拥有者在gitee上在此私有仓库上添加了你的账户,你才可以输入账号和密码进行https的clone代码。
ssh的方式,不管是公共还是私有的仓库,都必须让仓库管理员在那边添加了你的公钥,你才能用ssh协议clone和push代码。
Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
相较于SVN不同的是,Git多了一个暂存区,暂存区就是临时存放你的改动,事实上它只是一个文件用来记录你的修改内容。
上面这个图就是我们经常会用到的操作
在我们开发中肯定是用工具来操作git的,git bush我们熟悉掌握基本的git命令即可,重点还是在对应的开发工具中如果使用Git,作为一个java开发者,当然是在IDEA中使用Git了。
由于idea不自带git,所以首先要设置git安装路径:
在本地工作目录打开git bush clone下来远程仓库
通过IDEA打开此项目
下面来演示修改代码后如何提交
修改代码
点击上面的commit按钮
将本地仓库push到远程
如何指定忽略文件?
有一些文件比如.idea这是idea自动生成的,或者targer这些文件,我们不需要加到版本控制中,那么就可以忽略这些文件,这样在提交时就不会提交这些文件了。
首先要先安装一个.ignore插件
然后在项目根目录下创建.gitignore文件,里面输入我们要忽略的文件即可
首先先来理解一下分支这个概念,分支就像科幻电影里面的平行宇宙,如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,我们就需要处理一些问题了!
可直接在远程仓库创建分支,然后可以看到当前项目有两个分支:master和test
由上图可以看到我们本地只有master分支,现在我们需要把test分支拉取下来:
点击idea右下角git,选择远程test分支,checkout到本地
然后就可以看到本地test分支了:
接下来我们修改test分支上的代码,并将test代码合并到master分支上:
修改test分支代码,并完成add commit push一系列动作
本地项目切换分支,切换到master分支上
将远程test分支合并到本地master分支上,合并有两种方式,一种是将test分支上所有的提交记录一起合并到master
还有一种就是,我们在test分支上提交了很多次记录,我只想合并其中的某一条或几条记录的内容到master分支上,而并不想让test分支上的所有内容合并到master上,这时候我们可以选择某几条特定的来合并
注意:Cherry-Pick只能单条单条记录的合并,且每合并一条后,需要commit后才能再合并第二条
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。