Git简单使用教程个人独享版.docx
《Git简单使用教程个人独享版.docx》由会员分享,可在线阅读,更多相关《Git简单使用教程个人独享版.docx(26页珍藏版)》请在冰点文库上搜索。
Git简单使用教程个人独享版
Windows下Git和Gitlab简单教程
---jack杨俊伟
在使用之前,因为大家之前用的都是SVN集中式的版本控制系统,而git是分布式的,但在使用和功能上差异没有特别大,这里需要先简单了解它们的差异。
1)最核心的区别Git是分布式的,而Svn不是分布的。
Git跟Svn一样有自己的集中式版本库和Server端,但Git更倾向于分布式开发,因为每一个开发人员的电脑上都有一个LocalRepository,所以即使没有网络也一样可以Commit,查看历史版本记录,创建项目分支等操作,等网络再次连接上Push到Server端。
2)Git把内容按元数据方式存储,而SVN是按文件:
因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。
.git目录的体积大小跟.svn比较,你会发现它们差距很大。
3)Git没有一个全局版本号,而SVN有。
Git的内容的完整性要优于SVN:
GIT的内容存储使用的是SHA-1哈希算法。
这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
Git下载下来后,在OffLine状态下可以看到所有的Log,SVN不可以。
4)SVN必须先Update才能Commit,忘记了合并时就会出现一些错误,git还是比较少的出现这种情况。
5)克隆一份全新的目录以同样拥有五个分支来说,SVN是同时复製5个版本的文件,也就是说重复五次同样的动作。
而Git只是获取文件的每个版本的元素
6)提交(Commit)在SVN,当你提交你的完成品时,它将直接记录到中央版本库。
当你发现你的完成品存在严重问题时,你已经无法阻止事情的发生了。
如果网路中断,你根本没办法提交!
而Git的提交完全属於本地版本库的活动。
而你只需“推”(gitpush)到主要版本库即可。
Git的“推”其实是在执行“同步”(Sync)。
所以得出,SVN的特点是简单,只是需要一个放代码的地方时用是OK的。
Git的特点版本控制可以不依赖网络做任何事情,对分支和合并有更好的支持。
管理项目用SVN,管理代码用Git,这样可以取长补短。
1、->在WIN10下开始安装GIT客户端(包括git和tortoiseGit)
在使用教程中包含了必要的软件安装程序,版本是比较新的,可自行使用;
操作系统:
Windows10
git版本:
gitversion2.13.0.
git客户端:
TortoiseGit-2.4.0.2-64bit(官网下的)
TortoiseGit语言包:
汉化包,利于入门理解
a.安装git环境软件(全部安装选项均采用默认,路径自行选择)
基本一路默认next即可
安装成功后,空白处右键可以发现gitbash
b.安装TortoiseGit(全部安装选项均采用默认,路径自行选择)
此处安装完后点击finish会自动重启,请注意勾选
安装后右键菜单可以发现
当然,如果初学有需要,可以再安装language汉化包(./software目录下)
进入tortoiseGit-设置-语言
因为我们的项目代码是放在服务器或者版本仓库里的,所以接下来我们需要对tortoiseGit进行一些简单的配置使用;用过SVN的朋友应该不陌生
在这里我们可以通过命令行gitbash来简单设置
打开后出现命令行,这里的gitbash里是可以写cmd命令也可以写linux命令的,这是非常号的地方,并且有高亮提示,习惯linux指令,命令行操作就会顺手
输入以下内容(每行结束后,回车):
gitconfig--globaluser.name“用户名”
gitconfig--globaluser.email“邮箱地址”
这里注意要空格
以上命令中,用户名 为邮箱中的用户名(一般为姓名拼音首字母小写缩写);邮箱地址 为你的邮箱。
设置好后,可以输入 git config --list 命令,来显示设置结果:
当然也可以通过右键菜单,tortoiseGit-settings-Git
直接设置
->生成SHHKey
这里的密钥,是在代码递交或者clone的时候用来给仓库验证身份的,我们需要生成一个唯一可识别的key;
1、这里采取命令行的方式如下
在GitBash中输入如下内容,用来生成SSHKey:
ssh-keygen-trsa-C"your_email"
命令中,your_email为你的email地址。
输入该命令后,将会提示要求输入ssh key的存放路径, 建议直接回车 ,这时,存放路径将会放在用户目录下的.ssh文件夹中(一般为:
C:
\Users\用户名.ssh\id_rsa)。
随后将会要求输入密码,此时建议为空,即直接回车,提示重复输入时,也直接回车。
该操作将生成id_rsa和id_rsa.pub两个文件。
具体如下图所示:
2、当然也有菜单的图形操作,同样我们利用git自带的puttygen
点击generate生成文件
->接着出现(这里特别注意,不要等待,请随机移动鼠标生成编码)
我们在(C:
\Users\用户名.ssh\id_rsa)找到两个文件,就是刚生成的key文件,
->这里我们还需要对它进行转化,生成.ppk的文件,后面才可以方便使用;
我们可以这样理解,id_rsa.pub是要递交到仓库的公钥,而id_rsa则是用于打开锁的私钥,用于匹配;
✓启动puttygen (在开始菜单的搜索框中输入puttygen,既可以搜索到该应用程序)启动后,界面如右图所示。
✓点击load按钮将刚才最先生成的ssh中的密钥id_rsa文件导入,然后弹出对话框提示导入成功,接着点击saveprivatekey来保存ppk文件,最后在gitclone的对话框中加载ppk文件即可,连接的时候会提示输入git用户的密码,输入一下即可git clone 的配置文件。
✓得到如下
成功!
->在服务器上或Gitlab上管理项目代码
Git和svn一样在管理版本的时候需要提供url地址
这里应要求以gitlab为例,为大家演示;
那么什么是git,github,gitlab呢?
我们在这里要有个明确的概念
Øgit是一种版本控制系统,是一个命令,是一种工具
Øgitlib是用于实现git功能的开发库
Øgithub是一个基于git实现的在线代码仓库,包含一个网站界面,向互联网开放
Øgitlab是一个基于git实现的在线代码仓库软件,你可以用gitlab自己搭建一个类似于github一样的系统,一般用于在企业、学校等内部网络搭建git私服
那么明确了这些概念以后,我们就需要有一个自己的gitlab账号
点击进入:
http:
//192.168.1.66/users/sign_in(此为王总提供注册登陆IP)
如果你有github的账号,可以用它直接登陆,也可以重新注册一个,登陆以后的状态是这样子的;
->然后我们需要在gitlab上递交保存我们之前生成的公共密钥
以我本地为例C:
\Users\Jack\.ssh,在此目录下,用记事本或者notepad++打开之前生成的id_rsa.pub,将其文件内容,全部复制到Key输入框中。
Title建议为电子邮件地址(复制完Key后,会自动填充为Email地址)。
点击AddKey。
此时,你将拥有一个SSHKey,以后,在操作Git时,系统会自动使用私钥id_rsa来与服务器上的公钥进行认证匹配。
1.为了得到一个ssh或http地址,用于上传托管项目,这里我们以我的账号为例,新增一个测试项目,点击右上角的+号创建项目;
须知:
这里如果我们把项目设置成private,那么clone的时候是需要输入账户密码的
2.点击create
得到ssh地址:
git@jr13:
garvisjack/usegit.git;(该为测试地址)
http协议的地址:
http:
//garvisjack@jr13/garvisjack/usegit.git,左边的箭头可以选择
但是我们最终需要输入的提取地址一定是包含IP的,这里是重点
最终用于获取的地址:
http:
//garvisjack@192.168.1.66/garvisjack/usegit.git
3.让我们新增一个测试的文档
->新建一个文件或者别的
新建成功!
4.新建一个branch分支
Branch分支在实际应用中是git版本管理的核心,通过master分流出来的支线来操做代码;以下步骤
到这里我们已经完成了,软件的配置,gitlab的登录注册,密钥设置,接下来我们就开始本地上传或下载项目文件了。
->开始使用git
1.Clone(与SVN里的checkout类似)
Clone是Git的常用操作,用于将服务器上的版本库复制到本地。
右键点击需要复制的文件夹,选择Clone,按照下图中的操作即可:
点击ok即clone成功出现页面
2.Commit
Commit是指将本地修改,应用到本地的版本库中。
注意,和SVN不同,这里Commit不会上传到服务器。
Push
Push是将本地的版本库复制到服务器端。
Commit成功后,在弹出的对话框左下角选择Push可以在本地Commit之后,直接Push到服务器中。
在我们递交修改内容的时候,我们这里需要明确一个概念;
master是仓库托管的主要项目,这里名字叫usegit,我们可以为它创建分支yangjw,分支在第一个版本是和master一模一样的,我们本地所有的修改都是递交到分支上进行测试的,最后通过在merge分支代码,合并冲突,才递交到master上,这是git版本的主要流程
->那我们来递交一下新的project
1.首先在任意本地目录,新建文件夹,用于存储仓库内容
右键菜单出现,选择新建repository
2.得到
3.
准备一个要上传的文档写好内容
文件上边会出现一个+号
但是这里我们要注意,为了避免gitpush失败并产生冲突,我们需要
gitfetch:
相当于是从远程获取最新版本到本地,不会自动merge
gitpull:
相当于是从远程获取最新版本并merge到本地
这里因为是测试,所以我直接gitpull了,在实际使用中,gitfetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并
再次点击commit-push->
点击AddNew/Save
递交成功,展示
登录网页的gitlab,选择repository,yangjw的分支
到这里我们就完成了push一个修改的内容到分支上,如果主线master需要合并merge,再在客户端上操作,这样每个人递交的更新代码,都不会马上影响到主代码,保证了版本的完整性同时,增加了版本的可操作性。
最后,
以上所有操作是在win10的情况下说明的,而且大部分是图形操作,所有git操作都是有相应git命令的,在gitbash命令行中可以输入,相当于在linux下的操作,如果你使用的是苹果电脑,那么体验会非常的好,各位同事也基于兴趣,保证能使用工具的同时,自己扩展学习,灵活应用。
------结束------
2017.6.6