Git学习最全资料

1.1 Git简介 – 3 –

1.2 为什么要用Git – 3 –

1.3 Svn和Git对比 – 4 –

1.4 Git应用 – 5 –

1.4.1 注册Git账号 – 5 –

1.4.2 创建Git项目 – 7 –

1.4.3 安装Git客户端 – 8 –

1.4.4 ssh配置GitHub – 14 –

1.4.4.1 创建本地ssh – 14 –

1.4.4.2 将ssh配置到GitHub – 17 –

1.4.4.3 配置本地用户和邮箱 – 18 –

1.4.5 理解工作区与暂存区的区别 – 19 –

1.4.6 客户端TortoiseGit(Windows系统)的使用方法 – 20 –

1.4.6.1 安装tortoiseGit – 20 –

1.4.6.2 配置TortoiseGit – 24 –

1.4.6.2.1 设置为中文界面 – 24 –

1.4.6.3 从远端下载项目 – 26 –

1.4.6.3.1 下载说明 – 26 –

1.4.6.3.2 创建方式 – 26 –

1.4.6.3.3 克隆方式 – 31 –

1.4.6.3.4 备注 – 33 –

1.4.6.4 生成PPK文件 – 33 –

1.4.6.5 本地提交远端 – 36 –

1.4.6.5.1 提交本地版本库 – 36 –

1.4.6.5.2 提交到本地库 – 38 –

1.4.6.5.3 推送本地库到服务器 – 41 –

1.4.6.5.4 备注 – 46 –

1.4.7 Eclipse使用Git – 46 –

1.4.7.1.1 配置用户信息 – 46 –

1.4.7.1.2 eclipse生成SSH2 key: – 47 –

1.4.7.1.3 下载项目 – 49 –

1.4.7.1.4 上传项目 – 59 –

1.4.7.1.5 配置忽略文件 – 63 –

1.4.7.1.6 提交到本地库 – 63 –

1.4.7.1.7 提交到远程仓库 – 66 –

1.4.7.1.8 恢复提交的文件 – 73 –

1.4.7.1.9 备注 – 74 –

1.4.8 命令方式使用GitHub – 74 –

1.4.8.1 下载项目 – 74 –

1.4.8.2 生成版本 – 76 –

1.4.8.3 同步本地到服务器(托管平台) – 78 –

1.4.8.4 查看提交内容 – 80 –

1.4.8.5 版本退回 – 84 –

1.4.8.6 创建与合并分支 – 87 –

1.4.8.7 分支管理策略。 – 93 –

1.4.8.8 bug分支: – 95 –

1.4.8.9 多人协作。 – 98 –

1.4.8.10 分支推送 – 107 –

1.4.9 Git常用命令 – 108 –

Git简介

Git是一款分布式版本控制系统(Distributed Version control system)。

每一个项目我们都可以把他变成一个Git仓库。

开发者角度看Git管理者角度看GitGit优点Git缺点为什么要用Git

Git可以让研发团队更加高效的协同工作,从而提高生产率。

Svn和Git对比

Git

Svn

控制

分布式

集中式

存储

元数据

文件

分支

同一个目录

另一个目录

版本号

无全局

有全局

完整性

这是Git和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。Git跟SVN一样有自己的集中式版本库或服务器。但,Git更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,就像在飞机上,地下室,电梯里等svn下载项目到本地离线,你仍然能够提交文件,查看历史版本记录,创建项目分支,等。对一些人来说,这好像没多大用处,但当你突然遇到没有网络的环境时,这个将解决你的大麻烦。

所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.Git目录的体积大小跟.svn比较,你会发现它们差距很大。因为,.Git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。

分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。所以,经常会发生有些分支被遗漏的情况。

然而,处理Git的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。

目前为止这是跟SVN相比Git缺少的最大的一个特征。你也知道,SVN的版本号实际是任何一个相应时间的源代码快照。我认为它是从CVS进化到SVN的最大的一个突破。因为Git和SVN从概念上就不同,我不知道Git里是什么特征与之对应。如果你有任何的线索,请在评论里奉献出来与大家共享。

Git的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

Git应用

注册Git账号

Github服务器我们已经搭建完成,在浏览其中输入 进入Github账户注册登录界面。

点击Register,填写注册信息,注册GitHub用户,参照图例,不多做介绍。

注意:账号注册成功后需管理员分配项目权限

创建Git项目

切换到登录界面,输入用户名密码进行登录,登录后的界面如图

点击new Project,填写项目名称,项目概述,项目权限创建Git项目。创建完成之后,会跳转到项目主页

安装Git客户端

安装windows版Git客户端

欢迎界面 : 直接下一步;

协议 : 必须接受;

安装位置 : 预留100M空间, 自定义安装位置;

选择安装组件 :也可以默认选择;

— 图标组件(Addition icons) : 选择是否创建快速启动栏图标 或者 是否创建桌面快捷方式;

— 桌面浏览(Windows Explorer integration) : 浏览源码的方法, 单独的上下文浏览 只使用bash 或者 只用Git GUI工具; 高级的上下文浏览方法 使用Git-cheetah plugin插件;

— 关联配置文件 : 是否关联Git配置文件, 该配置文件主要显示文本编辑器的样式;

— 关联shell脚本文件 : 是否关联Bash命令行执行的脚本文件;

— 使用TrueType编码 : 在命令行中是否使用TruthType编码, 该编码是微软和苹果公司制定的通用编码;

开始菜单快捷方式目录 : 设置开始菜单中快捷方式的目录名称, 也可以选择不再开始菜单中创建快捷方式;

设置环境变量 : 选择使用什么样的命令行工具, 一般情况下我们默认使用Git Bash即可, 默认选择;

— Git自带 : 使用Git自带的Git Bash命令行工具;

— 系统自带CMD : 使用Windows系统的命令行工具;

— 二者都有 : 上面二者同时配置, 但是注意, 这样会将windows中的find.exe 和 sort.exe工具覆盖, 如果不懂这些尽量不要选择;

选择换行格式 :

— 检查出windows格式转换为unix格式 : 将windows格式的换行转为unix格式的换行在进行提交;

— 检查出原来格式转为unix格式 : 不管什么格式的, 一律转为unix格式的换行在进行提交;

— 不进行格式转换 : 不进行转换, 检查出什么, 就提交什么;

开始安装 :

安装结束 : over;

ssh配置GitHub创建本地ssh

Github传输方式有两种ssh和https, Ssh是一种传输代码的方法,速度快安全,建议我们今后使用时都用ssh方式

打开Git bash,输入ssh-keygen -t rsa –C ”test@qq.com” 一路回车。

ssh-keygen -t rsa -C “test@qq.com”

GitHub邮箱 : 该命令后面的邮箱就是GitHub的注册邮箱;

路径选择 : 使用该命令之后, 会出现提示选择ssh-key生成路径, 这里直接点回车默认即可, 生成的ssh-key在默认路径中;

密码确认 : 这里我们不使用密码进行登录, 用密码太麻烦;

进入生成的ssh目录 : C:Userslenovo.ssh (或者 C:Users自己电脑用户名.ssh)中, 使用记事本打开 id_rsa.pub 文件, 将该文件中的内容复制;

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHINdTw22YHggWuj84IJ2V9tneyJSmH8q8NK69dMvk6YgwTPYJs6ELa6VSmOCWDUgiCo8wzS6tjE6s3jd8aUG1Te3s4uT0iWU7eGgfbHzXLRdhEYE3W3HUCiltxCTm+3DApY9rNTzC0AWaDjXwjS6+GYoPdQyk0rKD9Y0UjApx3WlcgvgIcivKNV2TRkPxV9nH2cvgS+vGrlv923dFmCe7u8iB04pr8pqkFw1QllWT8tD4w70py4iQ14SMZtSAm3oJT+E7BDTFl5CA42vvf4+RpoUYtvYP56u7/Up6XtnhLb5MoqE0xAPf7FBchdUwc3/QOf4qK+f9rEnUgWkjGuCp test@qq.com

将SSH配置到GitHub

进入GitHub网站 : 登录GitHub,点击Profile Settings

选择ssh keys

将上面复制好的ssh-key复制进去 ,点击add key

验证是否配置成功 :

ssh Git@172.172.9.222

配置本地用户和邮箱

因为Git是分布式版本控制系统,我们需要设置一个用户名 和 邮箱, 这是用来上传本地仓库到GitHub中, 在GitHub中显示代码上传者;

使用命令 :

Git config –global user.name “test” //设置用户名

Git config –global user.email “test@qq.com” //设置邮箱

到此Git客户端已安装及GitHub配置完成,现在可以从GitHub传输代码了。

理解工作区与暂存区的区别

我们当前的目录叫做工作区,然后有一个叫做缓存区的东西,接着还有一个叫做版本库的玩意儿。其实我们添加,修改或者删除了工程里面的文件,Git都会发现,并且标志为未跟踪的文件,而Git add 路径这条命令就是告诉Git把文件列入跟踪文件列表,而Git commit -m “备注”就是把跟踪文件列表的操作清空,而清空前当然是记录成一个版本啦。查看缓冲区的情况只需要输入Git status。

工作区:就是你在电脑上看到的目录,比如目录下BSDemo里的文件(.Git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。

版本库(Repository):工作区有一个隐藏目录.Git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

客户端TortoiseGit(Windows系统)的使用方法安装tortoiseGit

语言包安装

Git学习最全资料,Git学习最全资料,第1张

配置TortoiseGit设置为中文界面

右键TortoiseGit—设置

设置中文简体

这里注意网络客户端不要配错

从远端下载项目下载说明

下载项目有两种方式,一种是直接克隆svn下载项目到本地离线,一种是先创建本地版本库再从服务端拉取项目,建议使用直接克隆方式。

创建方式

在任意空的文件夹点击鼠标右键,选择“Git 在这里创建版本库”

右键点击拉取

点击管理远端

配置远端服务信息,url为Github中ssh地址,putty密钥用工具生成,可参考下方生成ppk文件

其中,URL是远端版本库的Git地址

点击确定

克隆方式

1、在本地文件夹右键克隆

选择要克隆可库

点击确定即可克隆下来

备注使用客户端工具有pull(拉取) 和 fetch(获取):拉取是直接把服务端的内容下载到本地,可能会有冲突的情况。获取是先将内容放到版本库中,经过对比合并之后再放到本地。生成PPK文件

在“开始”菜单,选择“TortoiseGit”中的“PuttyGen”

点击“Generate”按钮,然后,鼠标在图中红色方框的区域内不停的移动,即可生成密钥。

点击“Save private key”按钮,把生成的密钥保存为PPK文件。

确定生成。

保存到一个地址

本地提交远端提交本地版本库

鼠标右键点击如上图图标的文件,选择“增加”

这时,文件图标变为

表示添加到本地库成功。

提交到本地库

鼠标右键点击如上图图标的文件,选择“Git提交(C) … -> “master”…”

会出现提示,设置用户名和邮箱。

设置用户名、邮箱和签名密钥(PPK文件)

输入日志信息,完成提交。

推送本地库到服务器

如果所有文件夹和文件的图标都如图所示

,那么我们就可以把本地库推送到版本服务器了。

在本地库所在根目录(本机为D:mydoc13ssfc),点击鼠标右键,选择“TortoiseGit”-〉“推送”

完成推送

这时候在服务端才会展示

备注使用客户端工具提交和推送两个步骤提交是直接提交到本地版本库推送是将内容直接提交到远端服务器上面还有比较差异、查看版本、解决冲突、合并冲突、合并分支、切换分支等功能,以后自己慢慢熟悉Eclipse使用Git配置用户信息

依次点击菜单Window——Preferences——Team——Git——Configuration

点击其中的Add Entry按钮添加用户信息:

这里的Key-Value键值对是提交代码时的备注信息,这里我们可以添加用户名和邮箱等信息。

其中Key中输入User.name, 然后Value中输入用户名,点击OK;这样就将User用户的用户名添加成功了。然后再次点击Add Entry按钮,添加User用户的Email信息,其中Key中写下user.email,Key中输入你的邮箱名,点击OK,此时user用户的邮箱信息即添加完成。当然,你也可以添加其他的备注信息。添加完成后如下图所示:

eclipse生成SSH2 key:

windows — perferences–General–Network Commection–SSH2–key

management–General RSA Key

然后把生成的SSH Key 注册到Github上,登录Github–settings–add把上诉生成的SSH Key粘贴即可。

备注:该方法就相当于命令行方法,在公司电脑和自己笔记本电脑把生成的SSH Key粘贴即可,可以添加很多个SSH Key

查看生成的秘钥是否在在默认系统盘(C盘),有些人奇葩会安装在其他盘。

然后把生成的公钥粘贴到Github上:(该步不能省略,一定要用命令检查下生成的公钥是否正常)

若该步没有操作,执行命令:$ ssh -T Git@Github.com报这样的错误:

下载项目

点击file—import

选择Git—Projects from Git

选择Clone Uri

填写远程项目地址ssh

选择分支

选择本地存放仓库地址

上传项目

接下来我们来配置我们的本地Repository:

在Eclipse中选中我们要备份的项目,然后依次点击右键——Team——Share Project…此时将打开Configure Git Repository对话框,如下所示:

选择已经克隆好的仓库

或者用本地项目作为Git仓库

配置忽略文件

配置.Gitignore来排除这个文件夹,打开Navigator窗口,在project根目录中添加.Gitignore文件,将需要排除控制的目录写入.Gitignore文件中:

提交到本地库

然后提交修改的文件必须先add然后commit故通过Team -> Add to index可以将文件加入Git索引,进行版本监控:

若是不想添加到版本库中则“Remove from Index”该命令前提是为未commit,若是已经commit那么该命令不起作用。添加成功后文件状态发生变化由之前的“?”变成“*”:

细节:EGit中只要Commit就可以默认将untracked的文件添加到索引再提交更新,不需要分开操作

最后执行commit:(首次提交后,会自动生成master分支)

到此项目“testGit”就本地提交成功。接下来我们把本地项目提交至远程远程仓库Github上:

提交到远程仓库

进行如下设置:

下拉框选择如下:

然后进入如下截图操作:注意:“Force Update”若是勾选,表示覆盖提交

点击“next”出现如下图所示:

最后点击finis如下图,登录Github查看是否上传成功。

出现如下截图表示上传成功。

恢复提交的文件

实际开发中提交项目只需要提交如下三个文件即可:

备注

1.使用eclipse插件提交项目至远程必须先本地提交,最后提交至远程仓库

2.查看谁提交了代码,项目右击“team”–“show history”

3.查看提交记录:Team–Show in History (命令行为:Git log)

4.撤销恢复修改:Replace With–HEAD Revision (命令行为 Git checkout head .)

5.更新项目远程仓库:Team– Pull (命令行:Git pull )

6.查看哪些文件被修改了:Team–Synchronize Workspace

7.提交项目时注意忽略不必要的文件或文件夹如maven项目下的target文件夹忽略

8.Git提供了多重协议用来连接Git服务器,其中最常见的就是https和Git,Git就是可以免用户名和密码的,不同的协议,项目连接地址是有区别的,如下

本文到此结束,希望对大家有所帮助!

关于作者:

生活百科常识网