本教程来源于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中配过域名。







2700

被折叠的 条评论
为什么被折叠?



