适合于刚开始学习使用Git的开发者,本文收集自李兴华老师的java课程。
一、Git
Git是一个开源的分布式版本控制系统,可以高效、快速的处理从很小到非常大的项目版本管理。
1、设置全局信息
要想进行软件开发,就一定需要软件开发者的人员信息,所以在使用Git前必须配置一些 公共的环境属性。
(1)、设置开发者的用户名称
git config --global user.name 'wlx'
(2)、设置开发者的邮箱信息
git config --global user.email 'wanglixins@163.com'
(3)、取得全部的全局信息
git config --list 或者 git config --l
2、创建仓库
(1)、首先创建一个文件夹
md e:mygit
(2)、将此目录变为仓库目录
进入此目录中进行配置 cd mygit
(3)、初始化仓库
初始化仓库一般有两种方式:
.方式一:创建一个包含有配置信息目录的仓库文件夹;
git init
随后会在当前目录中生成一个 *.git 的隐藏文件夹,这个文件夹包含全部的Git相关的版本信息。
.方式二:直接将当前目录设置为Git仓库
git init --bare
此种方式不再生成 *.git的隐藏目录,而是将所有的配置信息保存在 E:/mygit/
3、仓库的基本操作
在Git中可以管控的范围就是仓库信息(e:/mygit/),只需要将一些文件放进去就可以进行监控了。
在E:/mygit/目录下新建一个Hello.java的文件
(1)、查看当前仓库状态信息
git status
可以发现命令行提示增加了新文件。
(2)、提交文件到暂存库
git add Hello.java 或者 git add .(批量添加文件到版本库)
(3)、将文件提交到版本库
git commit -m "提交的注释信息"
git commit -m "Create New File Hello.java"
现在表示将新的文件提交到Git中进行管理。
(4)、自动增加并提交修改信息到版本库
git commit -a -m "Change Hello.java"
4、比较文件
git diff Hello.java
如果对Hello.java文件做出修改,则修改后的文件会在查询状态中体现出来,如下图:
5、工作区、暂存库、版本库(仓库)的概念
在整个Git中对于文件的操作一共提供三个区域
(1)、工作区:用户所编写的代码 的文件夹,所有操作都以工作区为主;
(2)、版本库:(Git仓库 )
.暂存区:只是将工作区中未保存的文件保存到暂存区中,此部分有Git维护
.版本库:是真正进行项目发布的代码。
首先用户要在工作区中编写程序文件,但此时的文件并不能真正的保存在Git仓库里,在这个区域中进行的文件的新建、修改、删除等操作都不会影响到最终的软件版本发布,好比一个临时的区域。
若要将这个区域里面的文件最终发布,首先需要将其保存在暂存区(git add .)。保存在暂存区的内容是暂时需要的,可以将暂存区的内容删掉。真正能够发布发布的项目必须将其设置在 Master分支上(版本库)。这样只有进行提交后才可以将暂存区中的内容保存在版本库中,才能真正的被其他人所使用(git commit )。
由于项目多次发布,所以在Git里面保存之后都会生成一个提交的版本编号(Commit ID)。
6、版本穿越
版本穿越即可以进行版本回退以及前进,Git进行版本穿越的核心在于每一个“Commit ID”。
(1)、查看当前日志信息:
git log 或 git log --pretty=oneline (在一行中显示)
在Master分支上有一个HEAD指针,这个HEAD指针指的是当前正在使用的版本HEAD指针默认情况下指向最新的提交点。如果说改变了HEAD指针,辣么就相当于可以任意的修改软件的使用版本。
(2)、回退到上一个版本
git reset --hard HEAD~1
每回退一次都回到了上一次的保存点(Commit ID)
(3)、查看所有删除的提交点
git reflog
(4)、恢复到最后一次提交点
git reset --hard 2e6de94bfad2752c4f9b1e567ac6215d9db7baf5
二 、GitHub
1、GitHub简介
Git并没有严格的网络要求,但是个人编写的代码给其他人使用,必须将其发布在网络上。所以Git专门提供了一个网站“www.github.com”,就是Git的一个公共服务器。在这个网站上可以发布两类项目:
.公共项目(免费):可以将自己的代码交给其他人完善;
.私有项目(收费):
2、配置远程仓库
GitHub就是一个服务器,它可以保存各个客户端发送过来的数据,可以使用ssh协议来进行客户端与服务器的连接。配置如下:
(1)、启动GITBash
在此命令行窗口中可以执行Linux命令
(2)、在此窗口中输入生成ssh key的命令
ssh -keygen -t rsa -C "wlx@163.com"
命令输入后会询问用户密钥的保存位置,默认会将公钥私钥保存在 C:/用户/.ssh 目录中
随后会提示设置一个密码。
(3)、将公钥内容配置到GitHub上
找到公钥保存位置: C:/用户/.ssh 中有两个文件
.公钥文件: id_rsa.pub 保存在外部使用
.私钥文件: id_rsa 做为本机标示
在GitHub中进入到设置页面,点击“SSH and GPG keys”按钮,随后选择“Add SSH key”,接着把复制的公钥的内容粘贴过来。
以后本台电脑就可以利用ssh的连接方式与GitHub进行代码的 交互了。
(4)、在GitHub上创建远程仓库
3、客户端访问
客户端采用Git进行操作 ,完了之后将 本地代码 同步到GitHub远程仓库中 ;操作如下:
(1)、建立客户端与服务器之间的连接信息
git remote add origin git@github.com:CoderLixin/mygit.git
(2)、将本地代码推送到服务器上
git push -u origin master
4、克隆仓库
在GitHub远程仓库可以直接创建一个仓库,本地要进行开发的话就要取得远程服务器端的仓库信息,GitHub提供了两个连接地址:
.SSH:git@github.com:CoderLixin/mygit.git
.Https:https://github.com/CoderLixin/mygit.git
克隆mygit仓库信息:
git clone git@github.com:CoderLixin/mygit.git
5、创建与合并分支
Git中每一个分支都可能做为一个可以完整运行的项目出现,Git中会存在大量的分支,最关键的 分支是MASTER分支,MASTER分支是给最终用户使用的,不能再master分支上进行开发。要想进行开发,开发者可以建立一个属于自己的分支,并不会一其他分支产生冲突。
(1)、查看当前仓库中的分支
git branch
(2)、创建一个新的dev分支
git branch dev
(3)、切换到dev分支上
git checkout dev
(4)、在dev分支上编写代码
(5)、增加文件到版本库中
git add .
git commit -m "Add Person.java"
(6)、切换回master分支进行分支合并
git checkout master(快速合并)
git merage --no-ff -m "user no-ff merage" dev(no-ff方式,带提交点)
git merge dev
(7)、将分支提交到服务器上
git push -u origin master
git push -u origin dev
(8)、删除分支
git branch -d dev (本地)
git push origin --delete dev (远程仓库)