Git和GitHub
1.git
1.1 git介绍
1>git是一个免费的,开源的分布式控制系统,可以快速的处理从小到大的各种项目
2>为什么要用git的分布式版本控制?
3>版本控制工具
[1]SVN,CVS,VSS等集中式版本控制工具
坏处就是中央服务器的故障问题,如果中央服务器宕机,那么谁都无法协同工作
[2]Git等分布式控制工具
好处就是可以解决远程服务器宕机的情况
且每个客户端都保存着整个项目的完整的版本(包括历史记录,更加安全)
4>Git的工作机制
5>GIt和代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们称为远程库
局域网: GitLab
互联网: GitHub(外网)
Gitee码云(国内网站)
1.2 git常用命令
1.2.1 设置用户签名
1>签名的作用:用于区分不同的操作者的作者身份
2>基本语法
git config --gobal user.name 用户名
got confing --gobal user.email 邮箱
1.2.3 本地库
1> 初始化本地库
命令: git init
步骤: [1]先创建一个空的文件夹目录,作为git本地库的存放路径,然后在该文件中右击打开git
[2]输入命令
[3]查看git本地库的状态: 会自动创建一个.git的隐藏文件
2>查看本地库的状态
命令: git status
显示:当前的分支
当前已经提交过的东西
本地库什么东西可以提交
步骤: [1]创建一个文件夹
[2]添加内容
[3]可以看到第三行命令改变,有一个文件可以提交,且该文件是红色的
3>添加暂存区
命令: git add 项目名
git rm --cached 项目名 将一个文件从暂存区删除
步骤:[1]执行命令
[2]发现文件变绿了
[3]再次执行删除命令
[4]发现文件又变红了
4>提交本地库
命令: git commit -m “日志信息” 文件名 提交文件到本地库(日志信息)
git reflog 显示日志信息
git log 显示详细的日志信息
步骤: [1]执行命令后会显示七位的版本码
[2]第一行提示会消失,第二行不变,第三行显示没有东西可以提交
[3]git reflog 显示日志信息
[4]git 详细的日志信息
5>git 修改本地库
已经提交到本地库的项目可以直接的修改
但是修改完后,用命令git status 会发现之前的文件会变成红色的,需要从新添加到暂存区和提交本地库
使用命令git reflog会显示两个版本
1.2.4 版本穿梭
作用:可以让当前的master指针指向特定的历史版本
命令:git reset --hard 版本号
先使用git reflog 查看历史版本说所对应的编号
然后使用git reset --hard 版本号 即可让当前的master指针指向特定的版本
1.3 git的分支
1.3.1 分支的定义
什么是分支?在版本的控制过程中,同时推进多个任务,为每个任务我们就可以创建每个任务的单独的分支.使用分支意味着
程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线的分支运行.对于初学者而言,分支可 以简单理解为副本,一个分支就是一个单独的副本.
分支的好处: [1]同时并行推进多个功能的开发,提高开发效率.
[2]各个分支在开发的过程中,如果某一个分支开发失败,不会对其它分支又任何影响,失败的分支重新开始即 可
1.3.2 分支的操作
1>查看当前的分支
命令: git branch -v
2>创建一个分支
git branch 分支名
3>切换分支
git checkout 分支名
切换完分支后可以修改工程
修改完工程后需要重新提交和保存到本地仓库
4>分支合并
git merge 分支名
在3>中使用切换分支并修改文件后,当切换回master分支后,发现master分支中的代码并没有被修改
在master上执行命令git merge 分支名 即可合并分支
这时可以发现查看代码发现代码被成功修改
引: 冲突合并问题
两个人都修改
在master上修改代码, 并把代码添加到本地库和提交
在hot-fix分支上也修改代码,并把代码保存(两次修改的内容不一样),并提交
在master分支上合并hot-fix分支,发现冲突
vim 代码 发现有冲突信息,这时可以在vim编辑器内将信息修改为自己想要的样子
提交的时候不能指定文件名,即:git commit -m “merg commit”
切换回其它分支,发现其它的分支中的代码并不会被修改
1.4 Git团队协作
1.4.1 团队内协作
1.4.2 跨团队协作
2.GitHub
2.1创建一个远程仓库
步骤:[1]在git.com首页右上角点击New repository
[2]在Repositoyr name中设置自己的远程库的名称
[3]选择public,并点击Create repostitory即可
[4]在本地的git中绑定远程仓库并起一个别名
创建别名 git remote add 别名 网址https://github.com/OneTimes1/gitSpace.git
查看别名 git remote -v
2.2 对远程库的操作
1>推送本地库到远程库
git push 别名 分支
输入命令
打开浏览器挡路登录
刷新 远程库,发现成功提交
2> 同步远程库到本地库
git pull 别名 分支 即可将远程仓库的内容拉取到本地库中
3>克隆远程库到本地
git clone 远程仓库的网址
克隆好会自动创建一个该网址的别名,可以使用git remote -v 查看别名
先清理自己的凭据管理器
创建一个文件夹用于存放第二个用户的git信息
在该文件夹下打开git,并输入命令,即可克隆
4>团队协作
适用场景:一个新人加入到某个公司后,需要参加该公司的代码的修改,这时就需要加入到该公司的组中,把代码下载到本 地,然后再把代码修改完后提交到远程仓库
步骤:
[1]在主用户的git账号中邀请将角色1一同协同
[2]角色1需要登录自己的账号同意邀请,即可将主用户的仓库拉到自己的仓库中
[3]然后角色1就可以把自己写好的代码推送到远程仓库中
[4]主用户就可以看到远程仓库的代码已经发生了改变
[5]主用户可以把远程仓库的代码同步到自己的本地仓库
5>跨团队合作
适用场景:不同的团队之间修改代码
步骤:
[1]角色2 可以在git主页面搜索账号名称/仓库名称
也可以复制主用户的仓库地址,直接找到https://github.com/OneTimes1/gitSpace.git
[2]点击右上角的fork
[3]可以在线编辑该代码,编辑完后可以点击Pull Request–>create re–>可以在write中写入自己的描述–>在主角色 中点击pull request -->如果有疑问可以聊天–>Merge pull request即可合并代码–>Confirm merge确定合并
[4]也可以克隆到本地库,修改后提交
2.3 SSH免密登录
作用: 在从本地库提交到远程仓库时:
步骤:[1]windows–用户–asus–打开git命令窗口
[2]命令:ssh-keygen -t rsa -C 用户的邮箱
[3]三次回车
[4]cat id_rsa.pub 得到公钥,复制下来
[5]在主用户名settings–SSH and GBK keys–New SSH–其名字–粘贴公钥
[6]Code–>SSH–>复制连接 git@github.com:OneTimes1/gitSpace.git
[7]git pull SSH的链接 分支名(master)
[8]修改一下代码
[9]提交到本地库
[10]git push SSH链接 分支 可以直接提交到远程库,不用在浏览器中登录
3.idea集成git
3.1配置Git忽略文件
1>为什么?与项目无关不参与服务器的部署运行,把他们忽略掉可以屏蔽IDE工具之间的差异
2>如何忽略
步骤:
[1]git.ignore文件创建好
[2]c盘–>用户–>asus–>git.ignore
[3]git.config引用git.ignore,复制路径(要把反斜线修改为正斜线)
[4]在idea中配置适用Git程序
创建一个maven工程
file–settings–versioncontrol–Git–path配置git的安装目录选中git.exe,提示git的版本信息即可
3.2在idea中适用git
1>在idea中把项目放到暂存区和提交到本地库的方法:
[1]在idea的上面点击 VCS(版本控制工具)–Import into Version Control–Create Git Repostiory–ok
[2]查看文件发现.git,pom文件变红,表示未被追踪
[3]右键pom–git–add 变绿,表示添加到了暂存区
[4]写一些代码,弹出一个框,显示是否自动添加到git的暂存区中
[5]右键该类,git–add. 项目右键–git–add–显示是否添加忽略的文件,点击取消
[6]右键项目–git–commit 写一个提交信息,这个信息就是git commit -m '"" 引号中的信息
[7]提交完后项目会变为正常的黑色
2>切换idea集成git版本
在idea左下角点击git , 右键check reversion:黄色的头指针就会指向第二个版本
3>在git中创建分支
git–repository–branches–new branch
也可以点击idea的右下角,也可以创建分支,勾选checkout branch会自动切换该分支
也可以直接的有下叫切换分支
4>合并分支
正常合并:
在hot-fix分支上修改代码
提交代码
右下角切换master分支
再点击有下角的分支,点击hot-fix–Merge into Current 即可合并
冲突合并:
在hot-fix上修改,并提交
在master上也修改,并提交
在master上合并hot-fix–merge into current–merge
会显示三个框,两边的是冲突的代码,箭头是添加,x号是删除
3.3在idea中适用github
1>前期准备工作:在idea中登录github
步骤:
[1]在idea中,点击settings–version control–github–可以使用账号和密码登录,也可以使用token
[2]在github上点击 settings–Deveroper settings–persional access tokens–Generate new token–Note 起个名字
--全部打勾–打绿色对号的就是token–一定要把这个口令复制下来–在idea中输入即可
2>把项目发布到远程库中(没有回自动创建)
步骤:
[1]VCS–input into version control–shar project on github
[2]输入远程库的名字,romote为别名,可以跟库名相同,勾选private就是一个私有的库,不勾选就是公共的库
3>把idea中的代码push到github
在本地修改完代码后需要先添加到本地库
点击蓝色的项目–Define Remote–name 可以随便起,url填SSH的链接
4>pull拉取远程仓库到本地
在远程库中修改代码蓝色的箭头
5>克隆远程仓库到本地
git from version control–git–url选择远程库中的代码链接
注:在克隆前需要把平局管理器删一下
4.Gitee码云
4.1简介
github的服务器在国外,使用github作为项目托管网站,如果网速不是很好的话,会严重影响用户体验,甚至会出现无法登录 的情况,针对这个问题,大家也可以使用国内的托管网站-码云
码云是开源中国推出的居于git 的代码托管服务中心,网址是https:gitee.com/, 使用方式跟github一样,而且还是一个中文 的网站
4.2在idea中使用码云
1>准备工作
需要在idea的插件中安装Gitee
安装好之后就可以在设置里面看到gitee
然后需要在idea的gitee中登录账号
2>将项目pust到码云远程仓库
3>将仓库pull到本地
在码云上修改完代码后
idea中pull时要选择码云的name
4>码云导入github的项目
新建仓库–导入已有仓库–填写github的https的链接–创建即可
如果github上的项目更新了,在gitee的仓库名的后面有个圈,可以点击这个圈,即可同步更新
5.GitLab
5.1GitLab简介
gitlab是由gitabinc开发,使用MIT许可证的基于网络的git仓库管理工具,且具有wiki和issue跟踪功能,使用git作为代码管理
工具,并在此基础上搭建起来的web服务
gitlab一开始是由ruby语言写的,后来,一部分用go语言重写.
5.1使用GitLab
1>准备工作
步骤:
[1] 在虚拟机上安装一个gitlab服务器
[2]输入命令vim /etc/sysconfig/network-scrips/ifcfg-ens33 修改其主机地址
[3]输入命令vim /etc/hostname 即可修改主机名
[4]如果从新配置了,那么就需要重启linux
//修改windows中的host文件中的linux的ip地址和主机名的映射,配置完了以后在xshell连接linux时就可以直接输 入lnux的名字,而不用输入ip地址
[5]下载gitlab-ce安装包,并放到linux的服务器上
注:如果遇到了新建的主机无法上网的问题 , 可以等一会 , 不用任何的操作vnware为新的虚拟机配置网关需要一定的 时间
2>gotlab的安装
步骤:
[1]vim一个脚本文件
[2]给脚本添加权限
[3]执行脚本
[4]在linux上初始化gotlab服务并启动gitlab服务
显示gitlab recinfigured!才是初始化成功
[5]在浏览器中输入虚拟机的ip地址,即可访问gitlab
需要在该页面设置自己的密码,并设置一个用户名
[6]点击New Project–create blank project–设置自己远程库的名称,公共库–create
注:第一次登录可能遇到的问题:
[1]装好gitlab后,在浏览器中输入gitlab的ip地址,需要创建一个密码,这个密码是管理员使用的密码,该账号是root
所以在设置好密码后,就可以使用root,密码的方式登录管理员
[2]如果要新建一个账号,那么在申请完以后,需要管理员登录自己的账号来同意申请
[3]然后普通账号才能登录
3>idea集成gitlab
[1]安装gitlab的插件
[2]在host文件中设置gitlab服务器的ip和域名映射 192.168.221.132 gitlab-server
[3]添加gitlab的服务器地址https://gitlab-server/
[4]复制gilab的远程仓库的链接http://gitlab-server/OneTime/git-test.git
这里需要把gitlab.example.com改为linux服务器的主机名gitlab-server
[5]push–define --填写gitlab服务器的链接
注:可能遇到的问题就是run按钮变灰
解决办法就是project Structure – 在下面有个文件选项,可以选择一个文件作为输出文件,然后重启idea即可