本教程来源于b站尚硅谷视频:5h打通Git全套教程IDEA版(涵盖GitHub\Gitee码云\GitLab)
教程介绍:
1. git
1.1 介绍
免费开源的分布式版本控制系统。
- 集中式代表svn(subversion),代码存在中央服务器中,谁用谁就down下来一个版本,缺点是单点故障,服务器没了,push,commit,pull都不行。
- 分布式代表git,联网从远程库中下载下来全部的版本,如果远程库没了,由于本地端点有全部的版本,可以在本地进行commit和pull,等服务器好了再push就行。
git和svn的详细区别可以参考Git和SVN的区别(以后别再问我了)。
版本控制就是编程界的后悔药,程序改崩了可以回滚到特定版本。
其实个人自己建文件夹也能做到版本控制,使用版本控制工具最重要的其实是团队协作开发时代码的合并,不至于你开发你的,我开发我的,导致代码混乱。
git本地的代码存储:
代码托管中心(远程库):
- 局域网:gitlab
- 互联网:github,gitee
1.2 安装
去官网https://git-scm.com/下载。
找个非中文目录一路next安装就行了。
安完后右键git bash here,看看版本号:
命令也可以在cmd里输。git bash框是用linux命令操作的。
1.3 命令
命令单词可以用tab补全。
命令代码 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config --global user.email 邮箱 | 设置用户邮箱 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit -m “”“日志信息” 文件名 | 添加到本地库(“日志信息”是描述信息,英文双引号包裹) |
git reflog | 查看简单历史纪录:带版本号,当前版本指针,描述信息 |
git log | 查看详细历史纪录:除了简单信息还有作者,邮箱,时间 |
git reset --hard 版本号 | 版本穿梭 |
1.4 分支
分支命令 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名xx | 把xx分支合并到当前分支上 |
合并时的冲突: | |
![]() | |
![]() | |
vim手动打开冲突文件: | |
![]() | |
将前中后的标识符号去掉,再保留要的代码:![]() | |
保存文件后再add+commit: | |
![]() |
1.5 团队协作
1.5.1 团队内协作
第一步:1号人在本地上创建了本地仓库,然后编了代码,push到远程仓库
第二步:2号人从远程库上clone下来全部代码,搞了个新的本地库(git的分布式属性)
第三步:2号人开发新代码后add+commit+merge+push到远程库,更新了远程库
第四步:1号人隔一段时间后从远程库pull下来代码更新本地库
当然不能谁都可以push代码,有权限控制。
1.5.2 团队外协作
第一步:不同团队不同远程库,所以2号团队的人想得到代码,要先fork1号团队远程库里代码到2号的远程库
第二步:2号团队的人clone下来
第三步:2号团队的人修改后push上去自己的远程库
第四步:1号团队通过命令,审核2号团队的代码后合并到自己远程库里
第五步:1号团队通过pull使用代码
1.6 git+idea
2. github
github-分布式代码托管服务平台
2.1 操作
github网站:https://github.com/,这网站很卡,正常还是用gitee吧,除非团队要用。
登录后创建远程仓库:
2.1.1 远程仓库命令
命令代码 | 作用 |
---|---|
git remote -v | 查看当前所有远程仓库地址别名 |
git remote add 别名 远程仓库地址 | 给远程仓库地址起别名 |
git push 别名/远程仓库地址 分支名 | push某分支内容到远程仓库该分支 |
git clone 远程仓库地址 | 把远程仓库内容clone到本地 |
git pull 别名 分支名 | 拉取远程仓库某分支最新内容来合并本地分支 |
![]() | |
为了保证效果,任何操作请在相应的文件夹内右键git bash here | |
clone操作=拉取代码+初始化本地仓库+创建别名 |
2.1.2 团队内协作方式
当然不是谁都能给远程库push东西的,能push的人要由远程库创建者
指定其加入该团队。
设置完后远程库创建者会得到一个该成员的邀请函链接:
把邀请函通过qq微信什么的给该成员,该成员打开那个链接,接受即可:
这样就可以推送代码了,无权限推送的话会报403错误:
公开库pull,clone是不需要权限的,push需要。
2.1.3 团队外协作方式
团队外的人需要先fork到自己的远程库:
自己的远程库里就有一个代码库了,并且有来自哪里的说明:
团队外人员修改代码后要发给团队内创建者一个pull request请求:
在团队内创建者的账号上就能看到一个pull request请求:
2.1.4 ssh免密登录
前面我们用的远程库链接都是https链接:
还有一个ssh链接:
为什么要搞这个,是因为之前每次push的操作都要登陆,很麻烦,用这个就不用登陆了,所以叫ssh免密登录。
但这个ssh链接不能直接用,要搞一个ssh的密钥:
在bash窗口输入: ssh-keygen -t rsa -C xxxx@xxxx.com
这个邮箱是库主的邮箱。
输入后一路回车,得到结果:
发现目录中多了个.ssh的文件夹,里面有公钥和私钥:
然后让库主把公钥添加到他的设置里就行了:
添加成功:
2.2 github+idea
2.2.1 配置git忽略文件
有些文件不需要pushpull等操作,比如用idea自带的.idea的idea设置文件等等,就要配置忽略文件。
忽略文件名叫xxx.ignore,推荐叫git.ignore,推荐放在家目录下:
git.ignore里建议配置忽略这些文件:
*.class
*.log
*.ctxt
.mtj.tmp/
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
然后在.gitconfig里配置上刚刚的git.ignore文件:
[user]
name = coderhaoSYS
email = 1198234865@qq.com
[core]
excludesfile = C:/Users/user-lihao/git.ignore
2.2.2 idea里设置git程序路径
File-settings-version control-git
2.2.3 idea里初始化git
然后路径里就多了个.git文件,初始化好了:
2.2.4 add,commit,push,pull,clone,reset等操作在idea中的使用
add:
2.2.3节操作后会发现文件是红的,说明没add到暂存区:
add到暂存区后就会变绿:
还有些文件是草绿色,说明是之前配置的忽略的文件,不会添加到暂存区。
- commit:
提交后的文件就会由绿变正常黑色:
reset切换版本:
切换头指针:
看到黄色指针变了,代码也变了:
分支创建和使用:
head指到master的第一次提交,然后新建一个dev分支,然后改改代码,commit两次,,然后head切到dev first-commit可以看到:
从左边的分支中看得出来,2次的dev是从master的第一次commit上改的.看到master和dev分支都有一个绿色指针指向最新commit,黄色指针只有一个,代表当前代码所在分支和版本。
merge分支:
合并到哪个分支,就要在哪个分支上操作,比如要把dev合并到master上,就要head指针指到master上。
合并时代码冲突会跳出冲突框,点击merge手动合并:
合并后观察log,路线很形象:
github账号关联idea:
由于push/clone/pull操作涉及到远程代码托管中心,所以需要github账号。
file-settings-version control-github:有账号密码和token两种登陆方式
token怎么来:
口令只显示一次,请妥善保存!:
settings里没有github就去安一个:
push:
正常要先创建远程库,然后本地push上去,但idea功能强大,push的时候就能自动创建远程库,所以可以直接push操作,不创远程库。
而且push之前要先pull,确保最新,然后push。
以后再修改的代码就可以直接push:
push默认https,网络可能不畅通,建议用ssh:
push设为ssh:
pull:
clone
3. gitee(码云)
3.1 介绍
国内的代码托管平台
网址:https://gitee.com/
注册个账号就行了。
使用:
操作和github类似。
3.2 gitee+idea
3.2.1 idea安装gitee插件
3.2.2 初次push
或者提前创建远程库,然后配好https/ssh,再push也行。
3.2.3 push
配个gitee的https/ssh链接:
注:整个代码上传流程(不含合并代码)
add–commit directory–push
3.2.4 pull
注意选择gitee的相关库地址:
3.2.4 clone
和github类似,不演示
3.2.5 github项目迁移到gitee
gitee新建仓库页面下面:
github的原项目更新了,如果想更新gitee的相同项目,可以点刷新按钮:
4. gitlab
4.1 gitlab介绍
使用MIT许可证的基于网络的git仓库管理工具。
官网:https://about.gitlab.com/
安装说明:https://about.gitlab.com/install/
安装需要一台linux服务器环境:
4.2 gitlab搭建
4.2.1 安装
这里参考centos7的安装说明,安装gitlab-ce社区版,企业版gitlab-ee要收费。
官网安装说明:https://about.gitlab.com/install/#centos-7
官网安装文档:https://docs.gitlab.com/ee/install/
4.2.2 初始化
初始化命令:
gitlab-ctl reconfigure
4.2.3 启动gitlab服务
启动命令:
gitlab-ctl start
4.2.4 访问gitlab服务器
直接访问ip地址即可,端口号默认80,就是gitlab的端口号。
一开始要改密码,改的是root账号的密码:
登陆后进首页:
操作和gitee还有github差不多,这里不赘述了。
4.3 gitlab+idea
4.3.1 安装gitlab插件,配置gitlab设置
4.3.2 操作
push,pull,clone,commit等操作和之前github,gitee一样,不再说了。
这个url使用ip就行了,下图中是因为windows的host中配过域名。